@beehexa/design-rules 0.0.0-stage → 2611.3.2
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 +56 -2
- package/dist/AGENTS.md +24 -0
- package/dist/catalog.json +1814 -0
- package/dist/docs/public/_redirects +7 -0
- package/dist/docs/public/apple-touch-icon.png +0 -0
- package/dist/docs/public/brand/logos/app/apple-touch-icon.png +0 -0
- package/dist/docs/public/brand/logos/app/avatar-800.png +0 -0
- package/dist/docs/public/brand/logos/app/icon-192.png +0 -0
- package/dist/docs/public/brand/logos/app/icon-512.png +0 -0
- package/dist/docs/public/brand/logos/app/icon-maskable-512.png +0 -0
- package/dist/docs/public/brand/logos/archive/d-550/beehexa-horizontal-1-light.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/beehexa-horizontal-2-dark.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/beehexa-horizontal-3-white.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/beehexa-horizontal-4-graphite.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/hexasync-horizontal-1-light.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/hexasync-horizontal-2-dark.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/hexasync-horizontal-3-white.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/hexasync-horizontal-4-graphite.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/beehexa-d-550-dark.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/beehexa-d-550-light.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/beehexa-design-d-550-dark.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/beehexa-design-d-550-light.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/hexasync-d-550-dark.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/hexasync-d-550-light.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/png/beehexa-design-d-550-dark@3x.png +0 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/png/beehexa-design-d-550-light@3x.png +0 -0
- package/dist/docs/public/brand/logos/beehexa-logo.zip +0 -0
- package/dist/docs/public/brand/logos/fig/anatomy-en.png +0 -0
- package/dist/docs/public/brand/logos/fig/anatomy-vi.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-dark-12.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-dark-14.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-dark-28.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-dark-32.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-dark-56.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-graphite-28.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-graphite-32.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-14.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-21.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-22.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-24.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-28.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-32.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-36-7c3aed7c3aed.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-36-swap.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-36.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-56.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-white-20.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-white-32.png +0 -0
- package/dist/docs/public/brand/logos/fig/clearspace.png +0 -0
- package/dist/docs/public/brand/logos/fig/construction-en.png +0 -0
- package/dist/docs/public/brand/logos/fig/construction-vi.png +0 -0
- package/dist/docs/public/brand/logos/fig/container-en.png +0 -0
- package/dist/docs/public/brand/logos/fig/container-vi.png +0 -0
- package/dist/docs/public/brand/logos/fig/hexasync-dark-20.png +0 -0
- package/dist/docs/public/brand/logos/fig/hexasync-dark-28.png +0 -0
- package/dist/docs/public/brand/logos/fig/hexasync-dark-48.png +0 -0
- package/dist/docs/public/brand/logos/fig/hexasync-light-19.png +0 -0
- package/dist/docs/public/brand/logos/fig/hexasync-light-28.png +0 -0
- package/dist/docs/public/brand/logos/fig/hexasync-light-48.png +0 -0
- package/dist/docs/public/brand/logos/fig/icon-graphite-14.png +0 -0
- package/dist/docs/public/brand/logos/fig/icon-graphite-16.png +0 -0
- package/dist/docs/public/brand/logos/fig/icon-light-16.png +0 -0
- package/dist/docs/public/brand/logos/fig/icon-light-24.png +0 -0
- package/dist/docs/public/brand/logos/fig/icon-light-48.png +0 -0
- package/dist/docs/public/brand/logos/fig/icon-light-92.png +0 -0
- package/dist/docs/public/brand/logos/fig/meaning-bee-en.png +0 -0
- package/dist/docs/public/brand/logos/fig/meaning-bee-vi.png +0 -0
- package/dist/docs/public/brand/logos/fig/meaning-outline-en.png +0 -0
- package/dist/docs/public/brand/logos/fig/meaning-outline-vi.png +0 -0
- package/dist/docs/public/brand/logos/fig/meaning-stack-en.png +0 -0
- package/dist/docs/public/brand/logos/fig/meaning-stack-vi.png +0 -0
- package/dist/docs/public/brand/logos/fig/misuse-serif.png +0 -0
- package/dist/docs/public/brand/logos/icon/beehexa-icon-graphite.svg +1 -0
- package/dist/docs/public/brand/logos/icon/beehexa-icon-white.svg +1 -0
- package/dist/docs/public/brand/logos/icon/beehexa-icon-yellow.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/beehexa-horizontal-1-light.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/beehexa-horizontal-2-dark.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/beehexa-horizontal-3-white.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/beehexa-horizontal-4-graphite.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/hexasync-horizontal-1-light.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/hexasync-horizontal-2-dark.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/hexasync-horizontal-3-white.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/hexasync-horizontal-4-graphite.svg +1 -0
- package/dist/docs/public/brand/logos/ui/beehexa-dark.svg +1 -0
- package/dist/docs/public/brand/logos/ui/beehexa-design-dark.svg +1 -0
- package/dist/docs/public/brand/logos/ui/beehexa-design-light.svg +1 -0
- package/dist/docs/public/brand/logos/ui/beehexa-icon-yellow.svg +1 -0
- package/dist/docs/public/brand/logos/ui/beehexa-light.svg +1 -0
- package/dist/docs/public/brand/logos/ui/hexasync-dark.svg +1 -0
- package/dist/docs/public/brand/logos/ui/hexasync-light.svg +1 -0
- package/dist/docs/public/brand/logos/ui/png/beehexa-design-dark@3x.png +0 -0
- package/dist/docs/public/brand/logos/ui/png/beehexa-design-light@3x.png +0 -0
- package/dist/docs/public/favicon.ico +0 -0
- package/dist/docs/public/favicon.svg +1 -0
- package/dist/docs/public/fonts/LICENSE-Inter.txt +93 -0
- package/dist/docs/public/fonts/LICENSE-JetBrainsMono.txt +93 -0
- package/dist/docs/public/fonts/inter-latin-ext-opsz-wght-italic.woff2 +0 -0
- package/dist/docs/public/fonts/inter-latin-ext-opsz-wght-normal.woff2 +0 -0
- package/dist/docs/public/fonts/inter-latin-opsz-wght-italic.woff2 +0 -0
- package/dist/docs/public/fonts/inter-latin-opsz-wght-normal.woff2 +0 -0
- package/dist/docs/public/fonts/inter-vietnamese-opsz-wght-italic.woff2 +0 -0
- package/dist/docs/public/fonts/inter-vietnamese-opsz-wght-normal.woff2 +0 -0
- package/dist/docs/public/fonts/jetbrains-mono-latin-ext-wght-normal.woff2 +0 -0
- package/dist/docs/public/fonts/jetbrains-mono-latin-wght-normal.woff2 +0 -0
- package/dist/docs/public/fonts/jetbrains-mono-vietnamese-wght-normal.woff2 +0 -0
- package/dist/docs/public/icon-192.png +0 -0
- package/dist/docs/public/icon-512.png +0 -0
- package/dist/docs/public/icon-maskable-512.png +0 -0
- package/dist/docs/public/robots.txt +4 -0
- package/dist/docs/public/site.webmanifest +21 -0
- package/dist/docs/scripts/color-pairs.mjs +46 -0
- package/dist/docs/scripts/contrast-exceptions.mjs +6 -0
- package/dist/docs/scripts/token-utils.d.mts +26 -0
- package/dist/docs/scripts/token-utils.mjs +114 -0
- package/dist/docs/src/brand/Beehexa-brandguide-full-mar12.pdf +0 -0
- package/dist/docs/src/brand/color+typoDirections.pdf +0 -0
- package/dist/docs/src/brand/structure-proposal.md +227 -0
- package/dist/docs/src/components/ChildPages.astro +25 -0
- package/dist/docs/src/components/CodeExample.astro +18 -0
- package/dist/docs/src/components/ColorDemo.astro +794 -0
- package/dist/docs/src/components/ColorExample.astro +32 -0
- package/dist/docs/src/components/ColorSwatch.astro +20 -0
- package/dist/docs/src/components/ComponentTabs.astro +21 -0
- package/dist/docs/src/components/DocsFooter.astro +25 -0
- package/dist/docs/src/components/HelpOptions.astro +20 -0
- package/dist/docs/src/components/IconBrowser.astro +257 -0
- package/dist/docs/src/components/IconDemo.astro +185 -0
- package/dist/docs/src/components/InDevelopment.astro +29 -0
- package/dist/docs/src/components/LayoutDemo.astro +384 -0
- package/dist/docs/src/components/Logo.astro +25 -0
- package/dist/docs/src/components/PhaseTable.astro +22 -0
- package/dist/docs/src/components/RoleGuides.astro +48 -0
- package/dist/docs/src/components/ShapeDemo.astro +239 -0
- package/dist/docs/src/components/ShapePin.astro +22 -0
- package/dist/docs/src/components/Sidebar.astro +206 -0
- package/dist/docs/src/components/SiteHeader.astro +211 -0
- package/dist/docs/src/components/SpacingDemo.astro +172 -0
- package/dist/docs/src/components/StatusBadge.astro +22 -0
- package/dist/docs/src/components/SystemAreas.astro +29 -0
- package/dist/docs/src/components/TableOfContents.astro +47 -0
- package/dist/docs/src/components/TokenTable.astro +40 -0
- package/dist/docs/src/components/TypeDemo.astro +249 -0
- package/dist/docs/src/components/logos/Fig.astro +28 -0
- package/dist/docs/src/components/logos/LogoAnatomy.astro +101 -0
- package/dist/docs/src/components/logos/LogoClearSpace.astro +81 -0
- package/dist/docs/src/components/logos/LogoColourVersions.astro +45 -0
- package/dist/docs/src/components/logos/LogoConstruction.astro +84 -0
- package/dist/docs/src/components/logos/LogoContainer.astro +84 -0
- package/dist/docs/src/components/logos/LogoHero.astro +42 -0
- package/dist/docs/src/components/logos/LogoInUse.astro +197 -0
- package/dist/docs/src/components/logos/LogoMeanings.astro +75 -0
- package/dist/docs/src/components/logos/LogoMinSize.astro +55 -0
- package/dist/docs/src/components/logos/LogoMistakes.astro +109 -0
- package/dist/docs/src/components/logos/LogoMisuse.astro +96 -0
- package/dist/docs/src/components/logos/LogoPair.astro +26 -0
- package/dist/docs/src/components/logos/LogoSvg.astro +68 -0
- package/dist/docs/src/content/components/button/accessibility.mdx +18 -0
- package/dist/docs/src/content/components/button/changelog.mdx +6 -0
- package/dist/docs/src/content/components/button/code.mdx +27 -0
- package/dist/docs/src/content/components/button/examples.mdx +21 -0
- package/dist/docs/src/content/components/button/meta.json +5 -0
- package/dist/docs/src/content/components/button/usage.mdx +18 -0
- package/dist/docs/src/content/foundations/guidelines/accessibility.mdx +19 -0
- package/dist/docs/src/content/foundations/guidelines/content.mdx +25 -0
- package/dist/docs/src/content/foundations/index.mdx +9 -0
- package/dist/docs/src/content/foundations/styles/border.mdx +89 -0
- package/dist/docs/src/content/foundations/styles/color/accessibility.mdx +32 -0
- package/dist/docs/src/content/foundations/styles/color/dark-mode.mdx +22 -0
- package/dist/docs/src/content/foundations/styles/color/index.mdx +65 -0
- package/dist/docs/src/content/foundations/styles/color/palette.mdx +57 -0
- package/dist/docs/src/content/foundations/styles/color/tokens.mdx +55 -0
- package/dist/docs/src/content/foundations/styles/color/usage.mdx +111 -0
- package/dist/docs/src/content/foundations/styles/data-visualization.mdx +11 -0
- package/dist/docs/src/content/foundations/styles/elevation.mdx +12 -0
- package/dist/docs/src/content/foundations/styles/icons/accessibility.mdx +72 -0
- package/dist/docs/src/content/foundations/styles/icons/code.mdx +171 -0
- package/dist/docs/src/content/foundations/styles/icons/index.mdx +62 -0
- package/dist/docs/src/content/foundations/styles/icons/library.mdx +19 -0
- package/dist/docs/src/content/foundations/styles/icons/usage.mdx +100 -0
- package/dist/docs/src/content/foundations/styles/illustration.mdx +9 -0
- package/dist/docs/src/content/foundations/styles/interaction-states.mdx +49 -0
- package/dist/docs/src/content/foundations/styles/layout/app-frame.mdx +81 -0
- package/dist/docs/src/content/foundations/styles/layout/breakpoints.mdx +56 -0
- package/dist/docs/src/content/foundations/styles/layout/grid.mdx +87 -0
- package/dist/docs/src/content/foundations/styles/layout/index.mdx +24 -0
- package/dist/docs/src/content/foundations/styles/layout/overlays.mdx +45 -0
- package/dist/docs/src/content/foundations/styles/layout/page-widths.mdx +38 -0
- package/dist/docs/src/content/foundations/styles/logos/downloads-and-terms.mdx +65 -0
- package/dist/docs/src/content/foundations/styles/logos/index.mdx +64 -0
- package/dist/docs/src/content/foundations/styles/logos/placement-and-containers.mdx +96 -0
- package/dist/docs/src/content/foundations/styles/logos/product-logos.mdx +56 -0
- package/dist/docs/src/content/foundations/styles/logos/using-the-logo.mdx +70 -0
- package/dist/docs/src/content/foundations/styles/motion.mdx +11 -0
- package/dist/docs/src/content/foundations/styles/opacity.mdx +9 -0
- package/dist/docs/src/content/foundations/styles/radius.mdx +98 -0
- package/dist/docs/src/content/foundations/styles/size-and-density.mdx +41 -0
- package/dist/docs/src/content/foundations/styles/spacing.mdx +70 -0
- package/dist/docs/src/content/foundations/styles/typography/code.mdx +53 -0
- package/dist/docs/src/content/foundations/styles/typography/index.mdx +58 -0
- package/dist/docs/src/content/foundations/styles/typography/usage.mdx +144 -0
- package/dist/docs/src/content/foundations/styles/typography/vietnamese.mdx +46 -0
- package/dist/docs/src/content/foundations/styles/z-index.mdx +9 -0
- package/dist/docs/src/content/foundations/tokens/all-tokens.mdx +36 -0
- package/dist/docs/src/content/foundations/tokens/index.mdx +27 -0
- package/dist/docs/src/content/get-started/content.mdx +14 -0
- package/dist/docs/src/content/get-started/design.mdx +30 -0
- package/dist/docs/src/content/get-started/develop.mdx +59 -0
- package/dist/docs/src/content/get-started/get-help.mdx +19 -0
- package/dist/docs/src/content/get-started/index.mdx +50 -0
- package/dist/docs/src/content/news/2026-10-16-site-structure.md +15 -0
- package/dist/docs/src/content/news/2026-10-20-docs-site.md +13 -0
- package/dist/docs/src/content/release-phases/index.mdx +12 -0
- package/dist/docs/src/content/tools/ai-agents.mdx +49 -0
- package/dist/docs/src/content/tools/ant-design-vue-theme.mdx +138 -0
- package/dist/docs/src/content/tools/eslint.mdx +15 -0
- package/dist/docs/src/content/tools/index.mdx +7 -0
- package/dist/docs/src/content/tools/stylelint.mdx +19 -0
- package/dist/docs/src/content-vi/foundations/styles/border.mdx +89 -0
- package/dist/docs/src/content-vi/foundations/styles/color/accessibility.mdx +32 -0
- package/dist/docs/src/content-vi/foundations/styles/color/dark-mode.mdx +22 -0
- package/dist/docs/src/content-vi/foundations/styles/color/index.mdx +65 -0
- package/dist/docs/src/content-vi/foundations/styles/color/palette.mdx +57 -0
- package/dist/docs/src/content-vi/foundations/styles/color/tokens.mdx +55 -0
- package/dist/docs/src/content-vi/foundations/styles/color/usage.mdx +111 -0
- package/dist/docs/src/content-vi/foundations/styles/data-visualization.mdx +11 -0
- package/dist/docs/src/content-vi/foundations/styles/icons/accessibility.mdx +72 -0
- package/dist/docs/src/content-vi/foundations/styles/icons/code.mdx +170 -0
- package/dist/docs/src/content-vi/foundations/styles/icons/index.mdx +62 -0
- package/dist/docs/src/content-vi/foundations/styles/icons/library.mdx +19 -0
- package/dist/docs/src/content-vi/foundations/styles/icons/usage.mdx +100 -0
- package/dist/docs/src/content-vi/foundations/styles/illustration.mdx +9 -0
- package/dist/docs/src/content-vi/foundations/styles/interaction-states.mdx +49 -0
- package/dist/docs/src/content-vi/foundations/styles/layout/app-frame.mdx +77 -0
- package/dist/docs/src/content-vi/foundations/styles/layout/breakpoints.mdx +56 -0
- package/dist/docs/src/content-vi/foundations/styles/layout/grid.mdx +87 -0
- package/dist/docs/src/content-vi/foundations/styles/layout/index.mdx +24 -0
- package/dist/docs/src/content-vi/foundations/styles/layout/page-widths.mdx +34 -0
- package/dist/docs/src/content-vi/foundations/styles/logos/downloads-and-terms.mdx +65 -0
- package/dist/docs/src/content-vi/foundations/styles/logos/index.mdx +64 -0
- package/dist/docs/src/content-vi/foundations/styles/logos/placement-and-containers.mdx +96 -0
- package/dist/docs/src/content-vi/foundations/styles/logos/product-logos.mdx +56 -0
- package/dist/docs/src/content-vi/foundations/styles/logos/using-the-logo.mdx +70 -0
- package/dist/docs/src/content-vi/foundations/styles/opacity.mdx +9 -0
- package/dist/docs/src/content-vi/foundations/styles/radius.mdx +98 -0
- package/dist/docs/src/content-vi/foundations/styles/size-and-density.mdx +41 -0
- package/dist/docs/src/content-vi/foundations/styles/spacing.mdx +70 -0
- package/dist/docs/src/content-vi/foundations/styles/typography/code.mdx +53 -0
- package/dist/docs/src/content-vi/foundations/styles/typography/index.mdx +58 -0
- package/dist/docs/src/content-vi/foundations/styles/typography/usage.mdx +144 -0
- package/dist/docs/src/content-vi/foundations/styles/typography/vietnamese.mdx +46 -0
- package/dist/docs/src/content-vi/foundations/styles/z-index.mdx +9 -0
- package/dist/docs/src/content.config.ts +68 -0
- package/dist/docs/src/lib/brand.ts +57 -0
- package/dist/docs/src/lib/contrast.ts +34 -0
- package/dist/docs/src/lib/i18n.ts +152 -0
- package/dist/docs/src/lib/icons.ts +46 -0
- package/dist/docs/src/lib/logo-geometry.ts +30 -0
- package/dist/docs/src/lib/lucide-categories.json +1 -0
- package/dist/docs/src/lib/lucide-data.ts +40 -0
- package/dist/docs/src/lib/navigation.ts +222 -0
- package/dist/docs/src/lib/release-phases.ts +10 -0
- package/dist/docs/src/lib/routes.ts +40 -0
- package/dist/docs/src/lib/token-descriptions-vi.ts +40 -0
- package/dist/docs/src/lib/tokens.ts +67 -0
- package/dist/docs/src/lib/tri-grid.ts +28 -0
- package/dist/docs/src/styles/chrome.css +122 -0
- package/dist/docs/src/styles/color.css +270 -0
- package/dist/docs/src/styles/docs.css +323 -0
- package/dist/docs/src/styles/global.css +66 -0
- package/dist/docs/src/styles/icons.css +135 -0
- package/dist/docs/src/styles/layout.css +165 -0
- package/dist/docs/src/styles/logos.css +236 -0
- package/dist/docs/src/styles/shapes.css +139 -0
- package/dist/docs/src/styles/tokens.css +461 -0
- package/dist/docs/src/styles/tokens.js +425 -0
- package/dist/docs/src/styles/typography.css +91 -0
- package/dist/docs/tokens/border.json +26 -0
- package/dist/docs/tokens/breakpoints.json +8 -0
- package/dist/docs/tokens/color.json +1350 -0
- package/dist/docs/tokens/elevation.json +26 -0
- package/dist/docs/tokens/layout.json +29 -0
- package/dist/docs/tokens/motion.json +12 -0
- package/dist/docs/tokens/radius.json +44 -0
- package/dist/docs/tokens/size.json +13 -0
- package/dist/docs/tokens/spacing.json +18 -0
- package/dist/docs/tokens/states.json +12 -0
- package/dist/docs/tokens/typography.json +220 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +1823 -0
- package/package.json +31 -4
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Vị trí và khung chứa
|
|
3
|
+
description: Logo đặt ở đâu trên website, trong tài liệu, email, ấn phẩm in, trên ảnh và cạnh đối tác; icon nằm thế nào trong icon ứng dụng, avatar và favicon; và các lỗi cần tránh.
|
|
4
|
+
order: 2
|
|
5
|
+
audience: web, giao diện sản phẩm, tài liệu
|
|
6
|
+
owner: Brand
|
|
7
|
+
updated: 2026-10-23
|
|
8
|
+
---
|
|
9
|
+
import LogoInUse from '../../../../components/logos/LogoInUse.astro';
|
|
10
|
+
import LogoContainer from '../../../../components/logos/LogoContainer.astro';
|
|
11
|
+
import LogoMistakes from '../../../../components/logos/LogoMistakes.astro';
|
|
12
|
+
|
|
13
|
+
## Trên website
|
|
14
|
+
|
|
15
|
+
- Đặt lockup ở bên trái header và link về trang chủ.
|
|
16
|
+
- Cỡ: icon 24–32 px trong header cao 56–64 px. Site này dùng icon 24 px trong header 56 px.
|
|
17
|
+
- Giữ [vùng trống](/vi/foundations/styles/logos/using-the-logo/#vùng-trống) và làm theo phần [hiển thị sắc nét](/vi/foundations/styles/logos/using-the-logo/#hiển-thị-sắc-nét).
|
|
18
|
+
- Bên trong HexaSync, dùng logo HexaSync. Xem [Logo sản phẩm](/vi/foundations/styles/logos/product-logos/).
|
|
19
|
+
|
|
20
|
+
<LogoInUse only={['header', 'app']} />
|
|
21
|
+
|
|
22
|
+
## Trong tài liệu và slide
|
|
23
|
+
|
|
24
|
+
- Đặt lockup ở góc trên bên trái trang đầu hoặc slide bìa, giữ đủ vùng trống.
|
|
25
|
+
- In rộng tối thiểu 25 mm.
|
|
26
|
+
- Chọn bản màu theo nền: bản 1 trên giấy và slide nền sáng, bản 2 trên slide nền tối.
|
|
27
|
+
|
|
28
|
+
<LogoInUse only={['document', 'slide']} />
|
|
29
|
+
|
|
30
|
+
## Trong email
|
|
31
|
+
|
|
32
|
+
- Đặt lockup dưới tên người gửi, dạng PNG xuất ở 2×, rộng tối thiểu 100 px. Nhiều ứng dụng email không hiển thị SVG.
|
|
33
|
+
- Dùng alt text “Beehexa”, để chữ ký vẫn đọc được khi ảnh bị chặn.
|
|
34
|
+
|
|
35
|
+
<LogoInUse only={['email']} />
|
|
36
|
+
|
|
37
|
+
## Trên ấn phẩm in
|
|
38
|
+
|
|
39
|
+
- Danh thiếp: lockup ở giữa mặt trước, bản 2 trên nền xám ghi; tên và thông tin ở mặt sau, nền trắng.
|
|
40
|
+
- Lockup rộng tối thiểu 25 mm, và vùng trống không bị nếp gấp, đường cắt hay lỗ đục lấn vào.
|
|
41
|
+
|
|
42
|
+
<LogoInUse only={['card']} />
|
|
43
|
+
|
|
44
|
+
## Trên ảnh và nền màu thương hiệu
|
|
45
|
+
|
|
46
|
+
- Trên ảnh, dùng bản 3 (trắng) ở vùng ảnh ít chi tiết, thường là một góc, giữ vùng trống. Không đặt ô nền sau logo để cứu một bức ảnh rối: hãy chọn khung cắt khác.
|
|
47
|
+
- Trên nền vàng thương hiệu, dùng bản 4 (xám ghi).
|
|
48
|
+
|
|
49
|
+
<LogoInUse only={['photo', 'yellow']} />
|
|
50
|
+
|
|
51
|
+
## Cạnh logo đối tác
|
|
52
|
+
|
|
53
|
+
Khi Beehexa xuất hiện cùng đối tác, ví dụ trên trang tích hợp, dùng lockup ngang. Hai logo có cùng trọng lượng thị giác, mỗi logo giữ vùng trống riêng, ngăn nhau bằng một vạch dọc mảnh.
|
|
54
|
+
|
|
55
|
+
<LogoInUse only={['partner']} />
|
|
56
|
+
|
|
57
|
+
## Icon trong ô: luật ô 3 cạnh
|
|
58
|
+
|
|
59
|
+
Icon ứng dụng và avatar đặt icon trong một ô, và nền tảng sẽ cắt ô đó thành hình vuông bo góc hoặc hình tròn. Mép ô là ranh giới, nên icon dùng luật riêng, đo bằng cạnh lục giác:
|
|
60
|
+
|
|
61
|
+
- Ô rộng 3 cạnh.
|
|
62
|
+
- Icon cao 2 cạnh, bằng hai phần ba ô, nằm giữa.
|
|
63
|
+
- Phía trên và phía dưới còn nửa cạnh.
|
|
64
|
+
|
|
65
|
+
<LogoContainer />
|
|
66
|
+
|
|
67
|
+
| File | Ô | Chiều cao icon | Nền |
|
|
68
|
+
|---|---|---|---|
|
|
69
|
+
| apple-touch-icon.png | 180 px | 120 px | Xám ghi #2B2A28 |
|
|
70
|
+
| icon-192.png, icon-512.png | 192 và 512 px | 128 và 341 px | Xám ghi #2B2A28 |
|
|
71
|
+
| icon-maskable-512.png | 512 px | 341 px, nằm trong vòng an toàn 80% | Xám ghi #2B2A28 |
|
|
72
|
+
| avatar-800.png | 800 px | 533 px | Xám ghi #2B2A28 |
|
|
73
|
+
|
|
74
|
+
Icon vàng trên ô xám ghi: giữ màu thương hiệu và đạt 7.76 : 1.
|
|
75
|
+
|
|
76
|
+
## Favicon
|
|
77
|
+
|
|
78
|
+
Favicon là icon đứng riêng, màu vàng, nền trong suốt, phủ kín ô vuông của nó.
|
|
79
|
+
|
|
80
|
+
| File | Cỡ | Ghi chú |
|
|
81
|
+
|---|---|---|
|
|
82
|
+
| favicon.svg | Mọi cỡ | Trình duyệt hiện nay dùng file này. Cạnh mịn, vẽ từ icon gốc. |
|
|
83
|
+
| favicon.ico | 16, 32 và 48 px | Cho trình duyệt và công cụ cũ. Mỗi cỡ được vẽ to rồi thu nhỏ, nên cạnh vẫn mịn. |
|
|
84
|
+
|
|
85
|
+
```html
|
|
86
|
+
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
|
87
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
|
88
|
+
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
|
89
|
+
<link rel="manifest" href="/site.webmanifest">
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
<LogoInUse only={['tab', 'avatar']} />
|
|
93
|
+
|
|
94
|
+
## Lỗi hay gặp
|
|
95
|
+
|
|
96
|
+
<LogoMistakes />
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Logo sản phẩm
|
|
3
|
+
description: Logo các sản phẩm của Beehexa, bắt đầu từ HexaSync, và khi nào dùng chúng thay cho logo công ty.
|
|
4
|
+
order: 3
|
|
5
|
+
audience: sản phẩm, marketing
|
|
6
|
+
owner: Brand
|
|
7
|
+
updated: 2026-10-23
|
|
8
|
+
---
|
|
9
|
+
import LogoPair from '../../../../components/logos/LogoPair.astro';
|
|
10
|
+
import LogoInUse from '../../../../components/logos/LogoInUse.astro';
|
|
11
|
+
|
|
12
|
+
## HexaSync
|
|
13
|
+
|
|
14
|
+
<LogoPair kind="hexasync" name="HexaSync" />
|
|
15
|
+
|
|
16
|
+
Lockup HexaSync được dựng đúng như lockup công ty: cùng icon, tên sản phẩm bằng Inter Display cùng độ đậm 500, cùng khoảng cách và cùng [vùng trống](/vi/foundations/styles/logos/using-the-logo/#vùng-trống). Đuôi chữ “y” thò xuống dưới icon.
|
|
17
|
+
|
|
18
|
+
Mọi luật trên trang [Cách dùng logo](/vi/foundations/styles/logos/using-the-logo/) đều áp dụng: bốn bản màu, cỡ tối thiểu, các lỗi dùng sai.
|
|
19
|
+
|
|
20
|
+
## Logo nào dùng ở đâu
|
|
21
|
+
|
|
22
|
+
| Nơi dùng | Logo |
|
|
23
|
+
|---|---|
|
|
24
|
+
| Bên trong ứng dụng web HexaSync | HexaSync |
|
|
25
|
+
| Trang sản phẩm HexaSync, trang connector và marketplace | HexaSync |
|
|
26
|
+
| Website công ty, hợp đồng, hoá đơn, tuyển dụng, mạng xã hội | beehexa |
|
|
27
|
+
| Tài liệu nói về nhiều sản phẩm | beehexa |
|
|
28
|
+
|
|
29
|
+
Không đặt logo beehexa và HexaSync cạnh nhau: hai logo dùng chung icon, đặt chung trông như lỗi. Chọn một theo ngữ cảnh.
|
|
30
|
+
|
|
31
|
+
## HexaSync khi dùng thực tế
|
|
32
|
+
|
|
33
|
+
- **Thanh ứng dụng:** bản nền tối trên thanh xám ghi, ở bên trái, link về trang chủ sản phẩm.
|
|
34
|
+
- **Màn hình đăng nhập và màn hình trống:** bản màu, đặt giữa, phía trên nội dung.
|
|
35
|
+
- **Marketplace và trang connector:** ô icon ứng dụng, cạnh đó là tên “HexaSync” viết bằng chữ. Các trang này cắt ảnh thành ô vuông, nên lockup không vừa.
|
|
36
|
+
|
|
37
|
+
<LogoInUse only={['app', 'login', 'marketplace']} />
|
|
38
|
+
|
|
39
|
+
## Icon và khung chứa
|
|
40
|
+
|
|
41
|
+
Sản phẩm không có icon riêng. HexaSync dùng file icon Beehexa cho favicon, icon ứng dụng và avatar, dựng theo [luật ô 3 cạnh](/vi/foundations/styles/logos/placement-and-containers/#icon-trong-ô-luật-ô-3-cạnh). Tên sản phẩm nằm ở tên ứng dụng, tiêu đề trang và alt text, không nằm trong icon.
|
|
42
|
+
|
|
43
|
+
## Cách viết tên
|
|
44
|
+
|
|
45
|
+
- Logo công ty viết thường: “beehexa”.
|
|
46
|
+
- Logo sản phẩm giữ cách viết của sản phẩm: “HexaSync”, viết liền, H và S viết hoa.
|
|
47
|
+
|
|
48
|
+
## Logo cho sản phẩm mới
|
|
49
|
+
|
|
50
|
+
Hiện mọi lockup sản phẩm đều dùng icon Beehexa với tên sản phẩm bên cạnh. Để có logo cho sản phẩm mới:
|
|
51
|
+
|
|
52
|
+
1. Gửi cho người phụ trách Brand qua [hello@beehexa.com](mailto:hello@beehexa.com?subject=New%20product%20logo), kèm tên sản phẩm đúng như cách sẽ viết.
|
|
53
|
+
2. Brand dựng lockup từ file gốc: icon, tên bằng Inter Display đã chuyển thành nét vẽ, đúng độ đậm đã chọn, cùng khoảng cách.
|
|
54
|
+
3. File được thêm vào [gói tải về](/vi/foundations/styles/logos/downloads-and-terms/).
|
|
55
|
+
|
|
56
|
+
Không tự vẽ logo sản phẩm, và không tạo icon riêng cho một sản phẩm.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Cách dùng logo
|
|
3
|
+
description: Bản màu, nền, vùng trống, cỡ tối thiểu, icon đứng riêng và những điều không được làm.
|
|
4
|
+
order: 1
|
|
5
|
+
audience: mọi người đặt logo
|
|
6
|
+
owner: Brand
|
|
7
|
+
updated: 2026-10-23
|
|
8
|
+
---
|
|
9
|
+
import LogoColourVersions from '../../../../components/logos/LogoColourVersions.astro';
|
|
10
|
+
import LogoClearSpace from '../../../../components/logos/LogoClearSpace.astro';
|
|
11
|
+
import LogoMinSize from '../../../../components/logos/LogoMinSize.astro';
|
|
12
|
+
import LogoMisuse from '../../../../components/logos/LogoMisuse.astro';
|
|
13
|
+
|
|
14
|
+
## Bản màu
|
|
15
|
+
|
|
16
|
+
Bốn bản, làm từ ba màu: vàng #FCB017, xám ghi #2B2A28 và trắng. Hãy chọn bản có độ tương phản cao nhất với nền của bạn.
|
|
17
|
+
|
|
18
|
+
<LogoColourVersions />
|
|
19
|
+
|
|
20
|
+
WCAG không đặt mức tương phản tối thiểu cho logo (Understanding 1.4.3 và 1.4.11), nhưng logo không ai nhìn rõ thì không ai nhớ. Chúng tôi đặt mỗi bản ở nơi nó nổi bật, nhắm tới mức 3 : 1 mà WCAG đặt cho các hình đồ hoạ khác. Đó là lý do icon vàng không đứng riêng trên nền sáng; ngoại lệ duy nhất là favicon (xem [icon đứng riêng](#icon-đứng-riêng)).
|
|
21
|
+
|
|
22
|
+
## Vùng trống
|
|
23
|
+
|
|
24
|
+
Giữ một lề trống rộng **x** ở cả bốn phía: không chữ, không hình, không mép trang lấn vào. x là x-height của wordmark, tức chiều cao chữ thường, và bằng đúng một cạnh của lục giác. Vì x là một phần của logo, lề trống to nhỏ theo logo.
|
|
25
|
+
|
|
26
|
+
<LogoClearSpace />
|
|
27
|
+
|
|
28
|
+
File gốc đã có sẵn lề này trong artboard. Căn theo artboard, không căn theo hình vẽ, là đủ vùng trống.
|
|
29
|
+
|
|
30
|
+
## Cỡ tối thiểu
|
|
31
|
+
|
|
32
|
+
<LogoMinSize />
|
|
33
|
+
|
|
34
|
+
| | Màn hình | In |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| Lockup, bề rộng | 100 px | 25 mm |
|
|
37
|
+
| Icon đứng riêng, chiều cao | 16 px | 6 mm |
|
|
38
|
+
|
|
39
|
+
## Hiển thị sắc nét
|
|
40
|
+
|
|
41
|
+
Cạnh của icon nghiêng 30°, nên trên màn hình 100% (1×) chúng hiện răng cưa khi logo rơi vào giữa hai pixel.
|
|
42
|
+
|
|
43
|
+
- Đặt chiều cao và vị trí logo bằng số nguyên pixel.
|
|
44
|
+
- Trên màn hình, hiển thị logo bằng ảnh PNG xuất ở gấp 3 lần cỡ hiển thị, không dùng SVG. Trình duyệt thu nhỏ ảnh lớn, làm mềm cạnh một chút và giấu răng cưa. Mọi logo trên site này, kể cả header, đều làm như vậy.
|
|
45
|
+
- Cách làm: xuất file SVG gốc từ Figma, Illustrator hoặc Inkscape ở gấp 3 lần cỡ cần dùng. Cần logo cao 30 px thì xuất ảnh cao 90 px rồi hiển thị ở 30 px. Ảnh lớn hơn nhiều vẫn dùng được, nhưng nặng hơn khi tải và mỗi trình duyệt thu nhỏ hơi khác nhau.
|
|
46
|
+
- Không vẽ lại icon cho khớp lưới pixel: làm vậy sẽ hỏng lục giác đều và góc 30°.
|
|
47
|
+
- Trong tài liệu, slide và bản in, dùng SVG.
|
|
48
|
+
|
|
49
|
+
## Icon đứng riêng
|
|
50
|
+
|
|
51
|
+
Chỉ dùng icon không có wordmark khi tên đã có trên màn hình, hoặc khi không đủ chỗ cho lockup: favicon, icon ứng dụng, avatar và giao diện sản phẩm cỡ nhỏ.
|
|
52
|
+
|
|
53
|
+
| Nền | Màu icon |
|
|
54
|
+
|---|---|
|
|
55
|
+
| Tối | Vàng |
|
|
56
|
+
| Sáng | Xám ghi, hoặc vàng trên ô xám ghi |
|
|
57
|
+
| Ảnh hoặc màu đậm | Trắng |
|
|
58
|
+
|
|
59
|
+
Vàng trên trắng chỉ đạt 1.85 : 1. Đi cùng wordmark thì không sao, vì chữ xám ghi gánh phần đọc; đứng riêng thì icon gần như biến mất. Ngoại lệ duy nhất là favicon: dùng màu vàng để tab trình duyệt có màu thương hiệu.
|
|
60
|
+
|
|
61
|
+
## Dùng sai
|
|
62
|
+
|
|
63
|
+
<LogoMisuse />
|
|
64
|
+
|
|
65
|
+
## Alt text và link
|
|
66
|
+
|
|
67
|
+
- Logo đứng riêng: alt text là “Beehexa”, hoặc tên sản phẩm như “HexaSync”. Không thêm chữ “logo”.
|
|
68
|
+
- Logo là link về trang chủ: “Beehexa – Trang chủ”, để người dùng biết link dẫn đi đâu.
|
|
69
|
+
- Khi tên đã được viết ngay cạnh logo, logo chỉ để trang trí: để alt text rỗng.
|
|
70
|
+
- Logo là link thì cần có viền focus nhìn thấy được, như mọi link khác. WCAG chỉ miễn yêu cầu về màu của logo, không miễn cho phần điều khiển bao quanh nó.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Độ mờ"
|
|
3
|
+
description: "Khi nào được dùng độ trong suốt, và vì sao trạng thái và control disabled dùng màu thay vì độ mờ."
|
|
4
|
+
order: 10.5
|
|
5
|
+
planned:
|
|
6
|
+
- "Chỗ được dùng độ trong suốt: lớp phủ sau dialog, lớp phủ trên ảnh"
|
|
7
|
+
- "Vì sao hover, pressed và disabled dùng bậc màu, không dùng độ mờ"
|
|
8
|
+
- "Token độ mờ, nếu cần"
|
|
9
|
+
---
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Bo góc
|
|
3
|
+
description: Tám bậc bo góc, phần tử nào dùng bậc nào, và cách bo góc cho hình nằm trong hình khác.
|
|
4
|
+
order: 6
|
|
5
|
+
---
|
|
6
|
+
import ShapeDemo from '../../../components/ShapeDemo.astro';
|
|
7
|
+
import TokenTable from '../../../components/TokenTable.astro';
|
|
8
|
+
|
|
9
|
+
**Mọi góc bo đều là token radius. Chọn bậc theo loại phần tử, rồi kiểm lại với khung chứa nó.**
|
|
10
|
+
|
|
11
|
+
## Thang bo góc
|
|
12
|
+
|
|
13
|
+
Tám bậc. Số trong tên token theo thang khoảng cách: `radius.100` là 8 px, giống `space.100`.
|
|
14
|
+
|
|
15
|
+
<ShapeDemo kind="radius-scale" />
|
|
16
|
+
|
|
17
|
+
## Ví dụ
|
|
18
|
+
|
|
19
|
+
### `radius.0` · vuông
|
|
20
|
+
|
|
21
|
+
Những cạnh chạm mép màn hình: header của trang, bảng tràn hết chiều ngang và panel chạy sát mép.
|
|
22
|
+
|
|
23
|
+
<ShapeDemo kind="radius-use" item="0" />
|
|
24
|
+
|
|
25
|
+
### `radius.050` · 4 px
|
|
26
|
+
|
|
27
|
+
Phần tử nhỏ: checkbox, tag, badge và các mục trong menu.
|
|
28
|
+
|
|
29
|
+
<ShapeDemo kind="radius-use" item="050" />
|
|
30
|
+
|
|
31
|
+
### `radius.100` · 8 px
|
|
32
|
+
|
|
33
|
+
Control và các bề mặt nhỏ mở ra từ control: button, ô nhập, select, menu, popover, tooltip và alert. Ô nhập và button luôn dùng chung giá trị này.
|
|
34
|
+
|
|
35
|
+
<ShapeDemo kind="radius-use" item="100" />
|
|
36
|
+
|
|
37
|
+
### `radius.150` · 12 px
|
|
38
|
+
|
|
39
|
+
Card, và nhóm control có padding 4 px, như segmented control.
|
|
40
|
+
|
|
41
|
+
<ShapeDemo kind="radius-use" item="150" />
|
|
42
|
+
|
|
43
|
+
### `radius.200` · 16 px
|
|
44
|
+
|
|
45
|
+
Dialog và drawer, và nhóm control có padding 8 px.
|
|
46
|
+
|
|
47
|
+
<ShapeDemo kind="radius-use" item="200" />
|
|
48
|
+
|
|
49
|
+
### `radius.full` · viên thuốc
|
|
50
|
+
|
|
51
|
+
Avatar, switch và chip trạng thái dạng viên thuốc.
|
|
52
|
+
|
|
53
|
+
<ShapeDemo kind="radius-use" item="full" />
|
|
54
|
+
|
|
55
|
+
## Hình nằm trong hình
|
|
56
|
+
|
|
57
|
+
**Radius bên trong = radius bên ngoài − padding.** Dùng khi padding nhỏ hơn radius bên ngoài. Khi padding lớn hơn, phần tử bên trong giữ radius của nó, miễn là không lớn hơn radius bên ngoài.
|
|
58
|
+
|
|
59
|
+
<ShapeDemo kind="nesting" />
|
|
60
|
+
|
|
61
|
+
`radius.025` và `radius.075` chỉ dùng cho các trường hợp này. Không component nào dùng chúng mặc định.
|
|
62
|
+
|
|
63
|
+
Theo luật khoảng cách, kết quả luôn là một bậc trong thang: 2 px không bao giờ là padding, và 6 px chỉ là padding bên trong component.
|
|
64
|
+
|
|
65
|
+
Khi nội dung nằm sát mép trong một hộp có viền 1 px, cắt nó bằng `overflow: hidden`. Không tạo giá trị radius − 1.
|
|
66
|
+
|
|
67
|
+
## Focus ring
|
|
68
|
+
|
|
69
|
+
Focus ring nằm cách phần tử 2 px về phía ngoài, và trình duyệt tự bo nó theo góc: button 8 px có ring 10 px. Không cần token radius. Xem [Viền](/vi/foundations/styles/border/) cho chính ring.
|
|
70
|
+
|
|
71
|
+
<ShapeDemo kind="focus-radius" />
|
|
72
|
+
|
|
73
|
+
## Nên và không nên
|
|
74
|
+
|
|
75
|
+
<ShapeDemo kind="dodont" item="nested" />
|
|
76
|
+
<ShapeDemo kind="dodont" item="controls" />
|
|
77
|
+
<ShapeDemo kind="dodont" item="corners" />
|
|
78
|
+
|
|
79
|
+
## Code
|
|
80
|
+
|
|
81
|
+
```css
|
|
82
|
+
.card {
|
|
83
|
+
border-radius: var(--bh-radius-150);
|
|
84
|
+
padding: var(--bh-space-050);
|
|
85
|
+
}
|
|
86
|
+
.card img {
|
|
87
|
+
border-radius: var(--bh-radius-100); /* 12 − 4 = 8 */
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Token
|
|
92
|
+
|
|
93
|
+
<TokenTable prefix="radius" />
|
|
94
|
+
|
|
95
|
+
## Liên quan
|
|
96
|
+
|
|
97
|
+
- [Viền](/vi/foundations/styles/border/): độ dày viền, thanh đang chọn và focus ring.
|
|
98
|
+
- [Khoảng cách](/vi/foundations/styles/spacing/): các giá trị padding dùng trong quy tắc lồng nhau.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Kích thước và mật độ
|
|
3
|
+
description: Ba chiều cao control, cỡ vùng người dùng có thể bấm hoặc chạm, và mật độ của màn hình Beehexa.
|
|
4
|
+
order: 5
|
|
5
|
+
---
|
|
6
|
+
import LayoutDemo from '../../../components/LayoutDemo.astro';
|
|
7
|
+
import TokenTable from '../../../components/TokenTable.astro';
|
|
8
|
+
|
|
9
|
+
**Mọi control có ba chiều cao: 24, 32 và 40 px. Các control trên cùng một hàng dùng chung một chiều cao.**
|
|
10
|
+
|
|
11
|
+
Control là những thứ người dùng bấm vào hoặc gõ vào: nút, ô nhập, select, segmented control và tab. Chiều cao cố định giữ một hàng control thẳng hàng, dù chữ bên trong dài ngắn thế nào.
|
|
12
|
+
|
|
13
|
+
<LayoutDemo kind="controls" />
|
|
14
|
+
|
|
15
|
+
| Cỡ | Chiều cao | Ở đâu |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| Nhỏ | 24 px | Bảng dày đặc và thanh công cụ của chúng, bộ lọc, tag |
|
|
18
|
+
| Mặc định | 32 px | Form, nút, header, thanh công cụ, mọi chỗ còn lại |
|
|
19
|
+
| Lớn | 40 px | Trang đăng nhập và onboarding. Có thể dùng cho thao tác chính trên màn hình cảm ứng |
|
|
20
|
+
|
|
21
|
+
- Giữ các control cùng chiều cao trên cùng một hàng. Nút 24 px cạnh ô nhập 32 px trông bị lệch.
|
|
22
|
+
- Đặt chiều cao bằng token kích thước, không dùng padding. Chữ nằm giữa chiều cao.
|
|
23
|
+
|
|
24
|
+
## Vùng bấm
|
|
25
|
+
|
|
26
|
+
**Mọi control đều bấm được trong vùng ít nhất 24 × 24 px, và chạm được trong vùng 44 × 44 px trên màn hình cảm ứng.**
|
|
27
|
+
|
|
28
|
+
- 24 px là cỡ vùng bấm tối thiểu của WCAG 2.2 (SC 2.5.8). Mọi chiều cao control đều đạt mức này.
|
|
29
|
+
- Trên màn hình cảm ứng, giữ nguyên chiều cao nhìn thấy và mở rộng vùng phản hồi khi chạm lên ít nhất 44 × 44 px (`size.target.touch`).
|
|
30
|
+
|
|
31
|
+
## Mật độ
|
|
32
|
+
|
|
33
|
+
**Hiện Beehexa chỉ có một mật độ: mặc định.**
|
|
34
|
+
|
|
35
|
+
Một mật độ nghĩa là mọi màn hình được thiết kế và kiểm tra ở một cỡ. Mật độ gọn có thể ra sau; nó sẽ giảm chiều cao control và khoảng cách cùng lúc, và màn hình nào dùng token sẽ không cần sửa gì.
|
|
36
|
+
|
|
37
|
+
Trước khi có mật độ gọn, hãy làm bảng dày đặc bằng control và dòng cỡ nhỏ (24 px), không dùng token khoảng cách nhỏ hơn.
|
|
38
|
+
|
|
39
|
+
## Token
|
|
40
|
+
|
|
41
|
+
<TokenTable prefix="size" />
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Khoảng cách
|
|
3
|
+
description: Thang khoảng cách 14 bậc trên nền 8 px cho padding, gap và margin, và cách chọn bậc.
|
|
4
|
+
order: 3
|
|
5
|
+
---
|
|
6
|
+
import SpacingDemo from '../../../components/SpacingDemo.astro';
|
|
7
|
+
|
|
8
|
+
**Mọi khoảng trống đều là một token khoảng cách. Chọn bậc theo mức độ hai thứ thuộc về nhau.**
|
|
9
|
+
|
|
10
|
+
Những thứ thuộc về nhau thì đặt gần nhau. Các nhóm khác nhau thì cách xa hơn. Người đọc nhận ra các nhóm trước khi đọc một chữ nào.
|
|
11
|
+
|
|
12
|
+
<SpacingDemo kind="anatomy" />
|
|
13
|
+
|
|
14
|
+
## Thang khoảng cách
|
|
15
|
+
|
|
16
|
+
**14 bậc trên nền 8 px. Mỗi bậc có việc riêng, ghi ngay bên cạnh.**
|
|
17
|
+
|
|
18
|
+
Số trong tên token là phần trăm của 8 px: `space.100` là 8 px, `space.200` là 16 px, và `space.075` là 6 px. Các bậc càng lớn càng cách xa nhau, vì chênh 4 px thấy rõ giữa các khoảng nhỏ nhưng gần như vô hình giữa các khoảng lớn.
|
|
19
|
+
|
|
20
|
+
<SpacingDemo kind="scale" />
|
|
21
|
+
|
|
22
|
+
Khi hai thứ có thể dùng một trong hai bậc, hãy hỏi chúng thuộc về nhau tới mức nào. Càng liên quan thì khoảng càng nhỏ.
|
|
23
|
+
|
|
24
|
+
### Padding và gap
|
|
25
|
+
|
|
26
|
+
<SpacingDemo kind="padding-gap" />
|
|
27
|
+
|
|
28
|
+
- Padding là khoảng trống bên trong một phần tử. Đặt trên chính phần tử đó.
|
|
29
|
+
- Gap là khoảng trống giữa các phần tử. Đặt trên phần tử cha bằng `gap`, trong bố cục flex hoặc grid.
|
|
30
|
+
- Tránh dùng margin giữa các phần tử cùng cấp. Margin cộng dồn ở chỗ hai phần tử gặp nhau và để thừa khoảng sau phần tử cuối; `gap` không gặp cả hai vấn đề đó.
|
|
31
|
+
- Đo padding từ mép ngoài, tính cả viền. Ô nhập 32 px có viền 1 px thì có 11 px padding bên trong viền, nên chữ cách mép 12 px.
|
|
32
|
+
|
|
33
|
+
## Nền 8 px
|
|
34
|
+
|
|
35
|
+
**Từ 8 px trở lên, mọi khoảng đều là bội số của 4 px. Dưới 8 px, thang có thêm hai bậc không chia hết cho 4: 2 và 6 px.**
|
|
36
|
+
|
|
37
|
+
| Khoảng | Các bậc | Dùng cho |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| Gọn, dưới 8 px | 2, 4, 6 | Chỉ bên trong component |
|
|
40
|
+
| Từ 8 px | 8, 12, 16, 20, 24, 32, 40, 48, 64, 80 | Component, bố cục và các phần của trang |
|
|
41
|
+
|
|
42
|
+
- Line height của chữ cũng là bội số của 4 px (xem [Kiểu chữ](/vi/foundations/styles/typography/)). Chữ, control và khoảng trống thẳng hàng với nhau.
|
|
43
|
+
- Chỉ dùng `space.025` (2 px) để xê dịch một thứ nhỏ vào đúng chỗ: badge trên icon, chấm trạng thái cạnh chữ. Không dùng giữa các control hay làm padding.
|
|
44
|
+
- Chỉ dùng `space.075` (6 px) bên trong component, ở hai chỗ: trên và dưới nhãn của control 32 px, vì (32 − 20) ÷ 2 = 6, và hai bên tooltip. Không dùng cho bố cục, khoảng cách giữa các phần, padding của card, hay giữa icon và chữ: khoảng đó là 4 px cạnh chữ 14 px và 8 px cạnh chữ 16 px trở lên.
|
|
45
|
+
- Viền và vòng focus không phải khoảng cách. Đừng tính chúng vào, trừ khi tính padding như trên.
|
|
46
|
+
|
|
47
|
+
### Không có khoảng âm
|
|
48
|
+
|
|
49
|
+
Không có token khoảng cách âm.
|
|
50
|
+
|
|
51
|
+
- Khi hai thứ chồng lên nhau, như một chồng avatar, component tự quy định phần chồng.
|
|
52
|
+
- Không dùng margin âm để kéo một phần tử cho thẳng hàng. Hãy sửa khoảng cách xung quanh nó.
|
|
53
|
+
|
|
54
|
+
## Nên và không nên
|
|
55
|
+
|
|
56
|
+
<SpacingDemo kind="dodont" item="grouping" />
|
|
57
|
+
<SpacingDemo kind="dodont" item="scale" />
|
|
58
|
+
<SpacingDemo kind="dodont" item="nudge" />
|
|
59
|
+
|
|
60
|
+
## Chữ tiếng Việt
|
|
61
|
+
|
|
62
|
+
Chữ tiếng Việt cần dòng cao hơn để chứa dấu. Text style đã tự thêm chiều cao đó (xem [Kiểu chữ](/vi/foundations/styles/typography/)), nên khoảng cách không đổi: dùng cùng token cho cả hai ngôn ngữ.
|
|
63
|
+
|
|
64
|
+
Nhãn tiếng Việt thường dài hơn nhãn tiếng Anh. Hãy cho nhãn xuống dòng, hoặc chừa đủ chỗ trong khung chứa. Không bớt khoảng cách để nhét vừa nhãn.
|
|
65
|
+
|
|
66
|
+
## Liên quan
|
|
67
|
+
|
|
68
|
+
- [Khung ứng dụng](/vi/foundations/styles/layout/app-frame/): khoảng cách giúp header, menu bên và page header thẳng hàng.
|
|
69
|
+
- [Lưới](/vi/foundations/styles/layout/grid/): cột, gutter và lề trang ở mỗi breakpoint.
|
|
70
|
+
- [Kích thước và mật độ](/vi/foundations/styles/size-and-density/): chiều cao control.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Code
|
|
3
|
+
description: Font stack, cách lấy font, tính năng OpenType cho chữ số và mã, và các token chữ.
|
|
4
|
+
order: 3
|
|
5
|
+
---
|
|
6
|
+
import TokenTable from '../../../../components/TokenTable.astro';
|
|
7
|
+
import TypeDemo from '../../../../components/TypeDemo.astro';
|
|
8
|
+
|
|
9
|
+
## Font stack
|
|
10
|
+
|
|
11
|
+
Dùng token, không tự viết danh sách font.
|
|
12
|
+
|
|
13
|
+
```css
|
|
14
|
+
/* font.family.sans */
|
|
15
|
+
font-family: Inter, "Noto Sans", system-ui, sans-serif;
|
|
16
|
+
|
|
17
|
+
/* font.family.mono */
|
|
18
|
+
font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Noto Sans là font dự phòng vì có đủ chữ tiếng Việt và ký hiệu ₫, và có cỡ gần với Inter (x-height 0.536 em so với 0.546 của Inter), nên trang chuyển sang font dự phòng vẫn giữ bố cục.
|
|
22
|
+
|
|
23
|
+
## Lấy font
|
|
24
|
+
|
|
25
|
+
- **Trên web,** hãy tự host font. Dùng bản Inter trong kho Google Fonts (`github.com/google/fonts`, `ofl/inter`): bản này được hinting cho chữ nhỏ trên Windows và giữ đủ mọi tính năng OpenType. Không link tới Google Fonts API: file ở đó bỏ mất `cv05`, `cv08`, `ss02` và `zero`, trong khi `cv05` và `cv08` được bật mặc định (xem [Chữ số và mã](#chữ-số-và-mã)). Site này phục vụ các file đó, chia thành các bộ ký tự Latin, Latin Extended và tiếng Việt.
|
|
26
|
+
- **Trên máy tính,** để dùng trong Figma, slide và tài liệu, cài Inter từ Google Fonts và JetBrains Mono từ JetBrains. Bản Inter của Google Fonts cũng tránh được lỗi dấu bị cắt trong các ứng dụng Windows cũ như Office.
|
|
27
|
+
- Giấy phép của cả hai font đều cho phép dùng trong sản phẩm, tài liệu và logo.
|
|
28
|
+
|
|
29
|
+
## Chữ số và mã
|
|
30
|
+
|
|
31
|
+
`cv05` và `cv08` được bật cho mọi chữ Inter. Chúng cho chữ l thường có đuôi và chữ I hoa có chân, nên l, I và 1 không bao giờ trông giống nhau trong tên, ID và key. Bật các tính năng còn lại ở nơi cần; giữ nguyên đoạn văn.
|
|
32
|
+
|
|
33
|
+
- **Bảng và giá trị thay đổi:** dùng số đều cột (`font-variant-numeric: tabular-nums`), để chữ số thẳng cột và bộ đếm không bị giật.
|
|
34
|
+
- **Mã mà người dùng đọc hoặc gõ,** như mã đơn hàng, SKU và API key: thêm số 0 có gạch chéo (`zero`) cho Inter, hoặc đặt chúng bằng JetBrains Mono (`code.default`). JetBrains Mono không có `cv05` hay `cv08`, nên code trông vẫn như cũ.
|
|
35
|
+
|
|
36
|
+
<TypeDemo kind="numbers" />
|
|
37
|
+
|
|
38
|
+
<TypeDemo kind="features" />
|
|
39
|
+
|
|
40
|
+
Mọi text style được áp dụng bằng thuộc tính rút gọn `font`, và thuộc tính này đặt lại `font-feature-settings`. Vì vậy các tính năng được đặt trên mọi thành phần từ một biến, `--bh-font-features`; muốn thêm tính năng, hãy đổi biến, không đổi thuộc tính.
|
|
41
|
+
|
|
42
|
+
```css
|
|
43
|
+
/* Base: on every element */
|
|
44
|
+
:root { --bh-font-features: "cv05", "cv08"; }
|
|
45
|
+
*, ::before, ::after { font-feature-settings: var(--bh-font-features) !important; }
|
|
46
|
+
|
|
47
|
+
/* Opt in where needed */
|
|
48
|
+
.table-number { font-variant-numeric: tabular-nums; }
|
|
49
|
+
.code-value { --bh-font-features: "cv05", "cv08", "zero"; }
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Token
|
|
53
|
+
<TokenTable prefix="font" />
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Kiểu chữ
|
|
3
|
+
description: Hai font chữ và mười bốn text style, cùng độ đậm, khoảng cách chữ và line height.
|
|
4
|
+
order: 2
|
|
5
|
+
sidebarLabel: Overview
|
|
6
|
+
---
|
|
7
|
+
import TypeDemo from '../../../../components/TypeDemo.astro';
|
|
8
|
+
|
|
9
|
+
## Font chữ
|
|
10
|
+
|
|
11
|
+
Hai font là đủ cho mọi thứ: Inter cho chữ giao diện và chữ để đọc, JetBrains Mono cho code.
|
|
12
|
+
|
|
13
|
+
<TypeDemo kind="faces" />
|
|
14
|
+
|
|
15
|
+
Inter được chọn vì:
|
|
16
|
+
|
|
17
|
+
- x-height cao, nên chữ giao diện cỡ nhỏ vẫn dễ đọc.
|
|
18
|
+
- Có đủ chữ tiếng Việt, kể cả ký hiệu ₫.
|
|
19
|
+
- Có tính năng OpenType giúp phân biệt các ký tự dễ nhầm như l, I và 1. Điều này quan trọng với một sản phẩm đầy mã đơn hàng và API key.
|
|
20
|
+
- Là mã nguồn mở theo giấy phép SIL Open Font License, nên tự host và nhúng được.
|
|
21
|
+
- Là font của wordmark Beehexa, nên chữ trong sản phẩm và logo cùng một họ.
|
|
22
|
+
|
|
23
|
+
Inter có trục optical size: từ 32 px trở lên, font được vẽ thành Inter Display, khoảng cách chữ khít hơn cho tiêu đề. Trình duyệt tự áp dụng; hãy để `font-optical-sizing` ở `auto`.
|
|
24
|
+
|
|
25
|
+
## Text style
|
|
26
|
+
|
|
27
|
+
Chữ được định dạng bằng **text style**, không dùng cỡ chữ rời. Mỗi text style là một token mang cùng lúc cỡ chữ, line height, độ đậm và font, đặt tên theo vai trò. Mười bốn text style trong năm nhóm đủ cho mọi sản phẩm, tài liệu và trang web của Beehexa.
|
|
28
|
+
|
|
29
|
+
<TypeDemo kind="styles" />
|
|
30
|
+
|
|
31
|
+
- **Display** chỉ dùng cho trang marketing. Màn hình sản phẩm bắt đầu từ `heading.xlarge`.
|
|
32
|
+
- **Heading** dùng cho tiêu đề trang, phần, card và nhóm. Mỗi trang dùng một `heading.large`, làm tiêu đề trang.
|
|
33
|
+
- **Body** dùng cho đoạn văn. `body.default` (14 px) là mặc định trong giao diện sản phẩm; `body.large` (16 px) dùng cho chữ mà người dùng đọc kỹ thay vì lướt.
|
|
34
|
+
- **Label** dùng cho chữ trên hoặc cạnh control: nút, nhãn của form, tab, menu, badge.
|
|
35
|
+
- **Code** dùng cho code, ID và key.
|
|
36
|
+
|
|
37
|
+
## Độ đậm
|
|
38
|
+
|
|
39
|
+
| Độ đậm | Token | Dùng |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| 400 | `font.weight.regular` | Đoạn văn |
|
|
42
|
+
| 500 | `font.weight.medium` | Nhãn |
|
|
43
|
+
| 600 | `font.weight.semibold` | Tiêu đề |
|
|
44
|
+
| 700 | `font.weight.bold` | Chỉ cho display |
|
|
45
|
+
|
|
46
|
+
Không dùng độ đậm nhẹ hơn 400: nét mảnh bị đứt ở chữ nhỏ. Đoạn văn in đậm không phải là tiêu đề. Khi cần nhấn mạnh vì ý nghĩa, hãy dùng `<strong>` hoặc `<em>`, để trình đọc màn hình cũng nhận được.
|
|
47
|
+
|
|
48
|
+
## Khoảng cách chữ
|
|
49
|
+
|
|
50
|
+
Để ở 0. Trục optical size của Inter đã làm khít chữ lớn, nên tiêu đề không cần letter-spacing âm, và chữ nhỏ giữ khoảng cách mặc định.
|
|
51
|
+
|
|
52
|
+
## Line height
|
|
53
|
+
|
|
54
|
+
Line height là một phần của mỗi text style và nằm trên lưới 4 px: mọi giá trị đều là bội số của 4 px, nên chữ thẳng hàng với khoảng cách và component.
|
|
55
|
+
|
|
56
|
+
- Text style body và label dùng 1.3–1.5 lần cỡ chữ (14/20, 12/16, 16/24), đủ khoảng trống giữa các dòng chữ giao diện mà không làm đoạn văn bị loãng.
|
|
57
|
+
- Tiêu đề càng lớn line height càng khít, khoảng 1.1–1.25 ở cỡ display, để chữ lớn vẫn liền một khối.
|
|
58
|
+
- Chữ tiếng Việt dùng giá trị cao hơn; xem phần [Tiếng Việt](/foundations/styles/typography/vietnamese/).
|