@godxjp/ui 28.10.0 → 28.13.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 +2 -2
- package/agent/components/AppLauncher.json +10 -0
- package/agent/components/Attachments.json +27 -1
- package/agent/components/BranchScopePicker.json +10 -0
- package/agent/components/Cascader.json +5 -0
- package/agent/components/Checkbox.json +6 -0
- package/agent/components/CredentialReveal.json +21 -0
- package/agent/components/InputOTP.json +35 -0
- package/agent/components/PermissionMatrix.json +5 -0
- package/agent/components/SearchInput.json +5 -0
- package/agent/components/ServiceLauncherCard.json +10 -3
- package/agent/components/ServiceRolePanel.json +5 -0
- package/agent/components/Switch.json +6 -0
- package/agent/components/Tabs.json +10 -0
- package/agent/components/TimeRangePicker.json +5 -0
- package/agent/components/Transfer.json +5 -0
- package/agent/components/Upload.json +5 -0
- package/agent/components-index.json +1 -1
- package/agent/components.json +170 -4
- package/agent/index.json +3 -3
- package/agent/llms.txt +4 -4
- package/agent/tokens.json +30 -25
- package/dist/components/data-display/service-launcher-card.d.ts +19 -0
- package/dist/components/data-display/service-launcher-card.js +14 -1
- package/dist/components/data-entry/attachments.js +77 -33
- package/dist/components/ui/avatar.d.ts +1 -18
- package/dist/components/ui/avatar.js +1 -36
- package/dist/contracts/measurement.json +1 -1
- package/dist/i18n/messages/en.json +0 -530
- package/dist/i18n/messages/ja.json +0 -524
- package/dist/i18n/messages/vi.json +0 -524
- package/dist/lib/image-loading-status.d.ts +25 -0
- package/dist/lib/image-loading-status.js +41 -0
- package/dist/props/registry.d.ts +5 -1
- package/dist/props/registry.js +12 -1
- package/dist/styles/card-layout.css +6 -0
- package/dist/styles/control.css +2 -2
- package/dist/styles/data-entry-layout.css +245 -2
- package/dist/tokens/components/attachments.css +18 -9
- package/dist/tokens/components/segmented.css +2 -2
- package/docs/DESIGN-AUTHORITY.md +51 -0
- package/docs/assets/service-mark-rose.svg +6 -0
- package/docs/assets/service-mark-teal.svg +5 -0
- package/docs/data-display/service-launcher-card.tsx +232 -92
- package/docs/i18n/messages/en.json +699 -0
- package/docs/i18n/messages/ja.json +693 -0
- package/docs/i18n/messages/vi.json +693 -0
- package/docs/showcase/marketing-page.tsx +3 -2
- package/docs/showcase/table-pagination.tsx +18 -7
- package/docs/showcase/theme-customization.tsx +2 -1
- package/package.json +4 -3
|
@@ -629,10 +629,6 @@
|
|
|
629
629
|
"outsideBefore": "Before the visible range",
|
|
630
630
|
"schedule": "Schedule"
|
|
631
631
|
},
|
|
632
|
-
"textExamples": {
|
|
633
|
-
"preservedText": "Plain text",
|
|
634
|
-
"sampleText": "First line\n Indented line\n\nLast line"
|
|
635
|
-
},
|
|
636
632
|
"chat": {
|
|
637
633
|
"bubble": {
|
|
638
634
|
"typing": "Typing…",
|
|
@@ -669,531 +665,5 @@
|
|
|
669
665
|
"error": "failed"
|
|
670
666
|
}
|
|
671
667
|
}
|
|
672
|
-
},
|
|
673
|
-
"themeShowcase": {
|
|
674
|
-
"page": {
|
|
675
|
-
"title": "Flexible theme customization",
|
|
676
|
-
"subtitle": "One seed moves the whole system. Pick a palette and every control, surface, mark and focus ring on the board below repaints in place."
|
|
677
|
-
},
|
|
678
|
-
"bar": {
|
|
679
|
-
"title": "Theme",
|
|
680
|
-
"description": "The chips set the --primary seed inside a scope. Nothing here edits a component, forks a stylesheet or overrides a role.",
|
|
681
|
-
"paletteLabel": "Palette",
|
|
682
|
-
"cornerLabel": "Corner radius",
|
|
683
|
-
"customLabel": "Custom seed",
|
|
684
|
-
"customHint": "Any hex. The hover, pressed, border, focus and link steps all derive from it.",
|
|
685
|
-
"identityNote": "The identity colour deliberately stays where it is: a tenant that changes its action colour does not retint its logo."
|
|
686
|
-
},
|
|
687
|
-
"palette": {
|
|
688
|
-
"godx": "GoDX",
|
|
689
|
-
"indigo": "Indigo",
|
|
690
|
-
"teal": "Teal",
|
|
691
|
-
"amber": "Amber",
|
|
692
|
-
"rose": "Rose",
|
|
693
|
-
"custom": "Custom"
|
|
694
|
-
},
|
|
695
|
-
"corner": {
|
|
696
|
-
"sharp": "Sharp",
|
|
697
|
-
"default": "Default",
|
|
698
|
-
"soft": "Soft"
|
|
699
|
-
},
|
|
700
|
-
"tabs": {
|
|
701
|
-
"components": "Components",
|
|
702
|
-
"dashboard": "Dashboard"
|
|
703
|
-
},
|
|
704
|
-
"form": {
|
|
705
|
-
"email": "Work email",
|
|
706
|
-
"emailHint": "Release notices only.",
|
|
707
|
-
"emailPlaceholder": "you@ops.example.jp",
|
|
708
|
-
"handle": "Handle",
|
|
709
|
-
"regions": "Regions",
|
|
710
|
-
"regionsPlaceholder": "Select regions",
|
|
711
|
-
"regionsEmpty": "No region selected yet.",
|
|
712
|
-
"labels": "Labels",
|
|
713
|
-
"labelsPlaceholder": "Add a label",
|
|
714
|
-
"plan": "Plan",
|
|
715
|
-
"releaseDate": "Release date",
|
|
716
|
-
"channels": "Notification channels",
|
|
717
|
-
"cadence": "Cadence",
|
|
718
|
-
"density": "Row density",
|
|
719
|
-
"autoDeploy": "Deploy on merge",
|
|
720
|
-
"autoDeployHint": "A green pipeline promotes to staging without asking.",
|
|
721
|
-
"freeze": "Release freeze",
|
|
722
|
-
"budget": "Error budget · {value}",
|
|
723
|
-
"syncing": "Syncing the release ledger"
|
|
724
|
-
},
|
|
725
|
-
"plan": {
|
|
726
|
-
"starter": "Starter",
|
|
727
|
-
"standard": "Standard",
|
|
728
|
-
"scale": "Scale"
|
|
729
|
-
},
|
|
730
|
-
"channel": {
|
|
731
|
-
"email": "Email",
|
|
732
|
-
"escalation": "Escalate to the on-call rotation when a release stays in review for longer than one working day, including weekends and public holidays in the owning region",
|
|
733
|
-
"escalationHint": "Sent to the rotation, never to an individual.",
|
|
734
|
-
"pager": "Pager"
|
|
735
|
-
},
|
|
736
|
-
"cadence": {
|
|
737
|
-
"daily": "Daily",
|
|
738
|
-
"weekly": "Weekly",
|
|
739
|
-
"manual": "Manual"
|
|
740
|
-
},
|
|
741
|
-
"density": {
|
|
742
|
-
"compact": "Compact",
|
|
743
|
-
"default": "Default",
|
|
744
|
-
"comfortable": "Comfortable"
|
|
745
|
-
},
|
|
746
|
-
"steps": {
|
|
747
|
-
"caption": "Release progress",
|
|
748
|
-
"finished": "Finished",
|
|
749
|
-
"finishedHint": "Artefacts signed and archived.",
|
|
750
|
-
"inProcess": "In process",
|
|
751
|
-
"waiting": "Waiting",
|
|
752
|
-
"waitingHint": "Blocked on the contrast audit for the new seed."
|
|
753
|
-
},
|
|
754
|
-
"progress": {
|
|
755
|
-
"rollout": "Rollout · {value}",
|
|
756
|
-
"quota": "Build minutes · {value}",
|
|
757
|
-
"done": "Done"
|
|
758
|
-
},
|
|
759
|
-
"legend": {
|
|
760
|
-
"failed": "Failed",
|
|
761
|
-
"review": "In review",
|
|
762
|
-
"shipped": "Shipped"
|
|
763
|
-
},
|
|
764
|
-
"status": {
|
|
765
|
-
"caption": "Status marks",
|
|
766
|
-
"success": "Success",
|
|
767
|
-
"error": "Error",
|
|
768
|
-
"default": "Default",
|
|
769
|
-
"processing": "Processing",
|
|
770
|
-
"warning": "Warning",
|
|
771
|
-
"seed": "Seed"
|
|
772
|
-
},
|
|
773
|
-
"action": {
|
|
774
|
-
"primary": "Deploy",
|
|
775
|
-
"secondary": "Compare",
|
|
776
|
-
"outline": "Roll back",
|
|
777
|
-
"dashed": "Add stage",
|
|
778
|
-
"ghost": "Logs",
|
|
779
|
-
"deploying": "Deploying",
|
|
780
|
-
"discard": "Discard this release candidate"
|
|
781
|
-
},
|
|
782
|
-
"confirm": {
|
|
783
|
-
"trigger": "Delete release",
|
|
784
|
-
"title": "Delete this release?",
|
|
785
|
-
"description": "The artefacts stay in the registry. The release record and its approvals do not.",
|
|
786
|
-
"cancel": "Keep",
|
|
787
|
-
"ok": "Delete"
|
|
788
|
-
},
|
|
789
|
-
"avatars": {
|
|
790
|
-
"caption": "12 reviewers"
|
|
791
|
-
},
|
|
792
|
-
"rating": {
|
|
793
|
-
"1": "Unusable",
|
|
794
|
-
"2": "Rough",
|
|
795
|
-
"3": "Acceptable",
|
|
796
|
-
"4": "Good",
|
|
797
|
-
"5": "Shippable"
|
|
798
|
-
},
|
|
799
|
-
"otp": {
|
|
800
|
-
"title": "Verify this device",
|
|
801
|
-
"description": "Enter the six-digit code from your authenticator app.",
|
|
802
|
-
"field": "Verification code",
|
|
803
|
-
"verify": "Verify"
|
|
804
|
-
},
|
|
805
|
-
"signup": {
|
|
806
|
-
"title": "Create an account",
|
|
807
|
-
"description": "One account covers every environment you have been granted.",
|
|
808
|
-
"email": "Work email",
|
|
809
|
-
"password": "Password",
|
|
810
|
-
"submit": "Create account",
|
|
811
|
-
"or": "or",
|
|
812
|
-
"sso": "Continue with single sign-on",
|
|
813
|
-
"passkey": "Continue with a passkey"
|
|
814
|
-
},
|
|
815
|
-
"notify": {
|
|
816
|
-
"title": "Notifications",
|
|
817
|
-
"longTitle": "Your invitation to the Platform Reliability and Release Governance working group is waiting for a response",
|
|
818
|
-
"longMeta": "2026-09-12 09:12 UTC · expires in 3 days",
|
|
819
|
-
"open": "Open",
|
|
820
|
-
"bareTitle": "Invoice issued"
|
|
821
|
-
},
|
|
822
|
-
"qr": {
|
|
823
|
-
"caption": "Authenticator enrolment",
|
|
824
|
-
"label": "Two-factor authentication setup code",
|
|
825
|
-
"manualKey": "Manual setup key"
|
|
826
|
-
},
|
|
827
|
-
"welcome": {
|
|
828
|
-
"title": "Start from one hex",
|
|
829
|
-
"description": "Give the generator a brand colour and it writes the seed file, measures every contrast pair and refuses the ones that miss.",
|
|
830
|
-
"dismiss": "Dismiss"
|
|
831
|
-
},
|
|
832
|
-
"chat": {
|
|
833
|
-
"assistant": "Assistant",
|
|
834
|
-
"sent": "09:41",
|
|
835
|
-
"answer": "The seed is scoped to the board, so the rest of the document keeps its own palette.",
|
|
836
|
-
"bare": "And the focus ring?"
|
|
837
|
-
},
|
|
838
|
-
"thought": {
|
|
839
|
-
"label": "How the seed was applied",
|
|
840
|
-
"read": "Read the scope",
|
|
841
|
-
"readHint": "[data-godx-theme] on the board root",
|
|
842
|
-
"contrast": "Measure the pair",
|
|
843
|
-
"contrastBody": "Label on fill and fill on canvas, both themes, against WCAG 2.2 SC 1.4.3 and SC 1.4.11.",
|
|
844
|
-
"write": "Write the email fallback"
|
|
845
|
-
},
|
|
846
|
-
"carousel": {
|
|
847
|
-
"caption": "Shipped palettes"
|
|
848
|
-
},
|
|
849
|
-
"alert": {
|
|
850
|
-
"title": "Check",
|
|
851
|
-
"description": "The custom seed is applied as authored. Nothing lifts a light seed onto the dark spine, so a brand that has to read on both canvases needs a second value measured against the dark one.",
|
|
852
|
-
"okTitle": "Contrast verified"
|
|
853
|
-
},
|
|
854
|
-
"timeline": {
|
|
855
|
-
"seedApplied": "Seed applied",
|
|
856
|
-
"scope": "Board scope",
|
|
857
|
-
"contrastQueued": "Contrast sweep queued"
|
|
858
|
-
},
|
|
859
|
-
"dashboard": {
|
|
860
|
-
"releases": "Releases",
|
|
861
|
-
"releasesHint": "Rolling 30 days",
|
|
862
|
-
"revenue": "Recognised revenue",
|
|
863
|
-
"failureRate": "Change failure rate",
|
|
864
|
-
"failureHint": "Lower is better",
|
|
865
|
-
"seatsLabel": "Regions in scope",
|
|
866
|
-
"seats": {
|
|
867
|
-
"one": "{count} region",
|
|
868
|
-
"other": "{count} regions"
|
|
869
|
-
},
|
|
870
|
-
"mix": "Release mix",
|
|
871
|
-
"activity": "Recent activity",
|
|
872
|
-
"environment": "Environment",
|
|
873
|
-
"owner": "Owner",
|
|
874
|
-
"ledger": "Ledger reference",
|
|
875
|
-
"table": "Releases",
|
|
876
|
-
"tableHint": "Owners, regions and amounts are formatted for the active locale.",
|
|
877
|
-
"updated": "Updated {date}",
|
|
878
|
-
"rotate": "Rotate key"
|
|
879
|
-
},
|
|
880
|
-
"table": {
|
|
881
|
-
"id": "Release",
|
|
882
|
-
"owner": "Owner",
|
|
883
|
-
"region": "Region",
|
|
884
|
-
"ref": "Reference",
|
|
885
|
-
"status": "Status",
|
|
886
|
-
"amount": "Amount",
|
|
887
|
-
"noRef": "Not set"
|
|
888
|
-
},
|
|
889
|
-
"releaseStatus": {
|
|
890
|
-
"shipped": "Shipped",
|
|
891
|
-
"review": "In review",
|
|
892
|
-
"draft": "Draft",
|
|
893
|
-
"failed": "Failed"
|
|
894
|
-
}
|
|
895
|
-
},
|
|
896
|
-
"themeEditor": {
|
|
897
|
-
"title": "Theme editor",
|
|
898
|
-
"subtitle": "One seed colour in, a whole brand out, measured rather than asserted.",
|
|
899
|
-
"unreadable": {
|
|
900
|
-
"title": "The token stylesheet could not be read",
|
|
901
|
-
"description": "This page derives a brand from the canvas colours and ramp steps the document is painting, read from the live stylesheet. Neither could be read here, so nothing below it would be a measurement."
|
|
902
|
-
},
|
|
903
|
-
"order": {
|
|
904
|
-
"title": "Seed, then role, then scope, then instance",
|
|
905
|
-
"description": "Stop at the first level that does the job. Every level below the seed is a value that has stopped deriving, and nothing tells you when the brand moves past it."
|
|
906
|
-
},
|
|
907
|
-
"seed": {
|
|
908
|
-
"title": "1. Seed",
|
|
909
|
-
"description": "The brand's action colour: what a primary button is filled with. In most cases this is the whole theme.",
|
|
910
|
-
"label": "Brand seed",
|
|
911
|
-
"helper": "A six digit hex. Everything below derives from it and is measured against WCAG 2.2 AA.",
|
|
912
|
-
"presetLabel": "Edge cases",
|
|
913
|
-
"presetHelper": "Each of these produces an answer a well behaved blue hides.",
|
|
914
|
-
"presetPlaceholder": "A seed of your own",
|
|
915
|
-
"preset": {
|
|
916
|
-
"godx": "This package's own seed",
|
|
917
|
-
"blue": "An ordinary brand blue",
|
|
918
|
-
"very-light": "Near white: the fill cannot clear the light canvas",
|
|
919
|
-
"very-dark": "Near black: the dark seed runs to white",
|
|
920
|
-
"sunflower": "Sunflower: repoints the state steps in both themes"
|
|
921
|
-
},
|
|
922
|
-
"announce": {
|
|
923
|
-
"one": "Seed {hex}. Light {light}, dark {dark}. {pass} of {count} measured pair clears AA.",
|
|
924
|
-
"other": "Seed {hex}. Light {light}, dark {dark}. {pass} of {count} measured pairs clear AA."
|
|
925
|
-
},
|
|
926
|
-
"announceNoDark": "Seed {hex}. No lightness at this hue and saturation carries a readable fill on the dark canvas, so there is no dark theme to measure."
|
|
927
|
-
},
|
|
928
|
-
"derived": {
|
|
929
|
-
"title": "2. What the seed produces",
|
|
930
|
-
"description": "Read only, because these are results. Three roles per theme are written into the export; the rest derive from the primary in scope at the element that paints them, so writing them would pin them to this seed.",
|
|
931
|
-
"tableLabel": "Roles derived from the seed",
|
|
932
|
-
"column": {
|
|
933
|
-
"token": "Token",
|
|
934
|
-
"light": "Light",
|
|
935
|
-
"dark": "Dark",
|
|
936
|
-
"emitted": "In the export"
|
|
937
|
-
},
|
|
938
|
-
"written": "Written",
|
|
939
|
-
"derivedOnly": "Derives"
|
|
940
|
-
},
|
|
941
|
-
"contrast": {
|
|
942
|
-
"title": "3. Contrast",
|
|
943
|
-
"description": "Every pair the seed produces, measured with the package's own WCAG helper. A label on its fill owes 4.5:1 (SC 1.4.3); a fill on the canvas behind it owes 3:1 (SC 1.4.11).",
|
|
944
|
-
"tableLabel": "Measured contrast pairs",
|
|
945
|
-
"column": {
|
|
946
|
-
"pair": "Pair",
|
|
947
|
-
"measured": "Measured",
|
|
948
|
-
"threshold": "Needs",
|
|
949
|
-
"result": "Result"
|
|
950
|
-
},
|
|
951
|
-
"pair": {
|
|
952
|
-
"label-on-fill-light": "Primary label on fill, light",
|
|
953
|
-
"label-on-fill-dark": "Primary label on fill, dark",
|
|
954
|
-
"fill-on-canvas-light": "Primary fill on canvas, light",
|
|
955
|
-
"fill-on-canvas-dark": "Primary fill on canvas, dark",
|
|
956
|
-
"link-on-canvas-light": "Link ink on canvas, light",
|
|
957
|
-
"link-on-canvas-dark": "Link ink on canvas, dark"
|
|
958
|
-
},
|
|
959
|
-
"ratio": "{value}:1",
|
|
960
|
-
"pass": "Clears AA",
|
|
961
|
-
"fail": "Below AA"
|
|
962
|
-
},
|
|
963
|
-
"overrides": {
|
|
964
|
-
"title": "4. Per token overrides",
|
|
965
|
-
"description": "Below the seed on purpose. Reach for one only when the seed is right and a single token must differ.",
|
|
966
|
-
"costTitle": "What an override costs",
|
|
967
|
-
"costDescription": "A token set by hand stops following the seed. The next brand change moves everything derived and leaves this value behind, and no audit reports it.",
|
|
968
|
-
"labelTitle": "Label colour on the fill",
|
|
969
|
-
"labelHelper": "By default the label is chosen by the seed's own luminance, the same 0.179 threshold a runtime re-theme uses. Forcing it is the one override the generator has a flag for.",
|
|
970
|
-
"labelAuto": "Automatic",
|
|
971
|
-
"labelLight": "Light label",
|
|
972
|
-
"labelDark": "Dark label",
|
|
973
|
-
"darkTitle": "Dark seed lightness",
|
|
974
|
-
"darkHelper": "Contrast parity with the light theme puts it at {parity}. Hue and saturation are held either way; only lightness moves. An authored value is allowed to fail, and the table above is how it says so.",
|
|
975
|
-
"darkNoParity": "No lightness at this hue and saturation clears both floors, so there is no parity value to depart from.",
|
|
976
|
-
"darkReset": "Back to parity",
|
|
977
|
-
"darkAuthored": "Authored",
|
|
978
|
-
"darkParity": "At parity"
|
|
979
|
-
},
|
|
980
|
-
"export": {
|
|
981
|
-
"title": "5. Export",
|
|
982
|
-
"description": "Paste the first block into your own theme file and the second over the baked email palette, which no stylesheet can reach.",
|
|
983
|
-
"nameLabel": "Theme name",
|
|
984
|
-
"nameHelper": "Writes {name}.service.css and {name}.email.ts.",
|
|
985
|
-
"matches": "Identical to gen:brand",
|
|
986
|
-
"diverges": "No command emits this",
|
|
987
|
-
"divergesWhy": "The dark seed's lightness was authored here. The generator searches for parity and has no flag for it, so no command reproduces this file.",
|
|
988
|
-
"cssLabel": "Theme CSS for {name}",
|
|
989
|
-
"emailLabel": "Email palette for {name}",
|
|
990
|
-
"noDarkTitle": "This seed has no readable dark fill",
|
|
991
|
-
"noDarkDescription": "No lightness at this hue and saturation clears both 4.5:1 on its own label and 3:1 on the dark canvas. Desaturate the seed, or force the label above and look again."
|
|
992
|
-
},
|
|
993
|
-
"preview": {
|
|
994
|
-
"lightTitle": "Light",
|
|
995
|
-
"darkTitle": "Dark",
|
|
996
|
-
"seedIs": "Scoped to {hex}",
|
|
997
|
-
"tableLabel": "Invoice lines",
|
|
998
|
-
"column": {
|
|
999
|
-
"id": "Line",
|
|
1000
|
-
"item": "Item",
|
|
1001
|
-
"owner": "Owner",
|
|
1002
|
-
"state": "State"
|
|
1003
|
-
},
|
|
1004
|
-
"state": {
|
|
1005
|
-
"active": "Active",
|
|
1006
|
-
"pending": "Pending"
|
|
1007
|
-
},
|
|
1008
|
-
"line": {
|
|
1009
|
-
"licence": "Licence",
|
|
1010
|
-
"support": "Support",
|
|
1011
|
-
"setup": "Setup"
|
|
1012
|
-
},
|
|
1013
|
-
"action": {
|
|
1014
|
-
"save": "Save",
|
|
1015
|
-
"duplicate": "Duplicate",
|
|
1016
|
-
"export": "Export",
|
|
1017
|
-
"add": "Add line",
|
|
1018
|
-
"dismiss": "Dismiss",
|
|
1019
|
-
"delete": "Delete",
|
|
1020
|
-
"details": "Details"
|
|
1021
|
-
},
|
|
1022
|
-
"badge": {
|
|
1023
|
-
"brand": "Brand",
|
|
1024
|
-
"success": "Paid",
|
|
1025
|
-
"warning": "Due soon",
|
|
1026
|
-
"destructive": "Overdue",
|
|
1027
|
-
"info": "Draft",
|
|
1028
|
-
"neutral": "Archived"
|
|
1029
|
-
},
|
|
1030
|
-
"alert": {
|
|
1031
|
-
"title": "Billing address is incomplete",
|
|
1032
|
-
"description": "Invoices cannot be issued until it is filled in.",
|
|
1033
|
-
"link": "Back to the seed"
|
|
1034
|
-
},
|
|
1035
|
-
"field": {
|
|
1036
|
-
"org": "Organisation",
|
|
1037
|
-
"orgHelper": "Appears on every issued document.",
|
|
1038
|
-
"plan": "Plan",
|
|
1039
|
-
"tax": "Include tax",
|
|
1040
|
-
"mail": "Send automatically"
|
|
1041
|
-
},
|
|
1042
|
-
"plan": {
|
|
1043
|
-
"starter": "Starter",
|
|
1044
|
-
"pro": "Pro",
|
|
1045
|
-
"scale": "Scale"
|
|
1046
|
-
}
|
|
1047
|
-
}
|
|
1048
|
-
},
|
|
1049
|
-
"marketingShowcase": {
|
|
1050
|
-
"brand": {
|
|
1051
|
-
"name": "Example Works",
|
|
1052
|
-
"suffix": "Approvals"
|
|
1053
|
-
},
|
|
1054
|
-
"nav": {
|
|
1055
|
-
"label": "Primary",
|
|
1056
|
-
"product": "Product",
|
|
1057
|
-
"solutions": "Solutions",
|
|
1058
|
-
"pricing": "Pricing",
|
|
1059
|
-
"docs": "Docs",
|
|
1060
|
-
"signIn": "Sign in",
|
|
1061
|
-
"getStarted": "Start free",
|
|
1062
|
-
"open": "Open navigation",
|
|
1063
|
-
"title": "Navigation",
|
|
1064
|
-
"description": "Every destination in the bar, including the two that fold away at phone width.",
|
|
1065
|
-
"close": "Close navigation"
|
|
1066
|
-
},
|
|
1067
|
-
"hero": {
|
|
1068
|
-
"eyebrow": "Approval workflow",
|
|
1069
|
-
"title": "Every approval, in one auditable trail.",
|
|
1070
|
-
"lead": "Route an invoice, a purchase order or a contract to the approver who owns it, keep the evidence beside the decision, and export the year in one file.",
|
|
1071
|
-
"primary": "Start free",
|
|
1072
|
-
"secondary": "Book a walkthrough",
|
|
1073
|
-
"trust": "No card. 14 days. Cancel inside the product.",
|
|
1074
|
-
"panelTitle": "Tonight's queue",
|
|
1075
|
-
"panelNote": "Live figures from one tenant, refreshed on approval.",
|
|
1076
|
-
"pending": "Waiting on you",
|
|
1077
|
-
"cleared": "Cleared today",
|
|
1078
|
-
"median": "Median decision",
|
|
1079
|
-
"medianValue": "4h 12m",
|
|
1080
|
-
"endpointLabel": "Webhook endpoint",
|
|
1081
|
-
"endpointNote": "Copied verbatim into your gateway. It has no break opportunity in it."
|
|
1082
|
-
},
|
|
1083
|
-
"logos": {
|
|
1084
|
-
"title": "Teams that left email approvals behind",
|
|
1085
|
-
"caption": "The track ships PAUSED, and the control beside it is a real button in the tab order.",
|
|
1086
|
-
"marqueeLabel": "Customer wordmarks"
|
|
1087
|
-
},
|
|
1088
|
-
"features": {
|
|
1089
|
-
"title": "What it does",
|
|
1090
|
-
"lead": "Six capabilities, and not one of them is a new component.",
|
|
1091
|
-
"routingTitle": "Routing",
|
|
1092
|
-
"routingBody": "A rule reads the amount, the cost centre and the vendor, then picks the approver who owns that combination.",
|
|
1093
|
-
"auditTitle": "An audit trail your accountant can read without asking anyone what a status code means",
|
|
1094
|
-
"residencyTitle": "Residency",
|
|
1095
|
-
"residencyBody": "Every document and every derived index stays in the Tokyo region.",
|
|
1096
|
-
"evidenceTitle": "承認の証跡",
|
|
1097
|
-
"evidenceBody": "決裁の理由と添付を同じ行に残します。Evidence and decision are one record, not two systems.",
|
|
1098
|
-
"webhookTitle": "Webhooks",
|
|
1099
|
-
"webhookBody": "Each endpoint carries an identifier with nowhere to break, and the card holds it:",
|
|
1100
|
-
"ssoTitle": "SSO",
|
|
1101
|
-
"ssoBody": "SAML and OIDC, with group mapping onto approval roles."
|
|
1102
|
-
},
|
|
1103
|
-
"testimonials": {
|
|
1104
|
-
"title": "What the first year looked like",
|
|
1105
|
-
"label": "Customer quotes",
|
|
1106
|
-
"ratingLabel": "Rating",
|
|
1107
|
-
"q1": "We closed the quarter without a single approval sitting in somebody's inbox, the auditor asked for one export instead of eleven, and the finance team stopped keeping a private spreadsheet to track what had actually been signed.",
|
|
1108
|
-
"a1": "山口 佳奈",
|
|
1109
|
-
"r1": "Controller, Aoba Foods",
|
|
1110
|
-
"q2": "It stopped the arguments.",
|
|
1111
|
-
"a2": "Dana Whitfield",
|
|
1112
|
-
"r2": "Head of Procurement, Meridian Health",
|
|
1113
|
-
"q3": "Chúng tôi chuyển 240 quy trình phê duyệt sang đây trong sáu tuần, và không mất một chứng từ nào.",
|
|
1114
|
-
"a3": "Trần Minh Khoa",
|
|
1115
|
-
"r3": "Finance Lead, Truong An"
|
|
1116
|
-
},
|
|
1117
|
-
"pricing": {
|
|
1118
|
-
"title": "Pricing",
|
|
1119
|
-
"lead": "Per approver, per month. The yearly cycle bills once.",
|
|
1120
|
-
"cycleLabel": "Billing cycle",
|
|
1121
|
-
"monthly": "Monthly",
|
|
1122
|
-
"yearly": "Yearly",
|
|
1123
|
-
"perMonth": "per approver / month",
|
|
1124
|
-
"billedYearly": "billed once a year",
|
|
1125
|
-
"popular": "Most chosen",
|
|
1126
|
-
"saving": "2 months free",
|
|
1127
|
-
"fresh": "New",
|
|
1128
|
-
"quoted": "Quoted",
|
|
1129
|
-
"quotedNote": "Priced against your approver count and your residency region.",
|
|
1130
|
-
"starterName": "Starter",
|
|
1131
|
-
"starterNote": "One approval chain, one region.",
|
|
1132
|
-
"teamName": "Team",
|
|
1133
|
-
"teamNote": "Parallel chains, delegation, and the evidence export.",
|
|
1134
|
-
"enterpriseName": "エンタープライズ",
|
|
1135
|
-
"enterpriseNote": "専用テナント · SSO · 監査窓口。Dedicated tenant, SSO, named auditor contact.",
|
|
1136
|
-
"cta": "Start free",
|
|
1137
|
-
"ctaQuote": "Talk to us",
|
|
1138
|
-
"featChains": "Approval chains",
|
|
1139
|
-
"featDelegation": "Delegation and out-of-office",
|
|
1140
|
-
"featExport": "One-file audit export",
|
|
1141
|
-
"featSso": "SAML and OIDC",
|
|
1142
|
-
"featResidency": "Choice of residency region",
|
|
1143
|
-
"featSupport": "Named support contact",
|
|
1144
|
-
"limitedChains": "One chain only",
|
|
1145
|
-
"limitedSupport": "Business hours"
|
|
1146
|
-
},
|
|
1147
|
-
"cta": {
|
|
1148
|
-
"title": "Put one approval chain through it this week",
|
|
1149
|
-
"lead": "Import a chain from a spreadsheet, send three real approvals through it, and keep the export.",
|
|
1150
|
-
"primary": "Start free",
|
|
1151
|
-
"secondary": "Book a walkthrough",
|
|
1152
|
-
"note": "Sales replies within one business day, Tokyo time."
|
|
1153
|
-
},
|
|
1154
|
-
"footer": {
|
|
1155
|
-
"label": "Footer",
|
|
1156
|
-
"product": "Product",
|
|
1157
|
-
"company": "Company",
|
|
1158
|
-
"legal": "Legal",
|
|
1159
|
-
"contact": "Contact",
|
|
1160
|
-
"featuresLink": "Features",
|
|
1161
|
-
"pricingLink": "Pricing",
|
|
1162
|
-
"changelog": "Changelog",
|
|
1163
|
-
"status": "Status",
|
|
1164
|
-
"about": "About",
|
|
1165
|
-
"careers": "Careers",
|
|
1166
|
-
"terms": "Terms",
|
|
1167
|
-
"privacy": "Privacy",
|
|
1168
|
-
"security": "Security",
|
|
1169
|
-
"subprocessors": "Subprocessors",
|
|
1170
|
-
"accessibility": "Accessibility statement",
|
|
1171
|
-
"salesLine": "Sales",
|
|
1172
|
-
"supportLine": "Support",
|
|
1173
|
-
"addressLabel": "Registered office",
|
|
1174
|
-
"address": "Chiyoda, Tokyo",
|
|
1175
|
-
"rights": "Example Works. A fictional company, for documentation only."
|
|
1176
|
-
}
|
|
1177
|
-
},
|
|
1178
|
-
"showcase": {
|
|
1179
|
-
"pagination": {
|
|
1180
|
-
"recordCount": {
|
|
1181
|
-
"one": "{count} record",
|
|
1182
|
-
"other": "{count} records"
|
|
1183
|
-
},
|
|
1184
|
-
"loadMore": {
|
|
1185
|
-
"one": "Load {count} more",
|
|
1186
|
-
"other": "Load {count} more"
|
|
1187
|
-
}
|
|
1188
|
-
},
|
|
1189
|
-
"flexMeasure": {
|
|
1190
|
-
"title": "measure — full-bleed outside, a measured column inside",
|
|
1191
|
-
"lead": "A band is a <section> carrying the edge-to-edge paint around one Flex that measure centres and caps at --page-measure-*. The gutter stays pad's job: measure adds none. narrow (42rem) and medium (48rem) are reading measures; wide (72rem) is the marketing one."
|
|
1192
|
-
},
|
|
1193
|
-
"tagInput": {
|
|
1194
|
-
"longIdTitle": "Long identifiers and +N",
|
|
1195
|
-
"ledgerLabel": "Ledger ID",
|
|
1196
|
-
"ledgerHelper": "A 71-character identifier still stays inside the control"
|
|
1197
|
-
}
|
|
1198
668
|
}
|
|
1199
669
|
}
|