@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,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Cách dùng
|
|
3
|
+
description: Dùng cỡ nào, nét, màu và căn chỉnh cạnh chữ hoạt động thế nào, khi nào icon cần nhãn, và icon duy nhất cho từng thao tác thường gặp ở Beehexa.
|
|
4
|
+
order: 2
|
|
5
|
+
---
|
|
6
|
+
import IconDemo from '../../../../components/IconDemo.astro';
|
|
7
|
+
import ColorDemo from '../../../../components/ColorDemo.astro';
|
|
8
|
+
|
|
9
|
+
**Dùng icon 16 px, cùng màu với chữ, có nhãn, và cùng một icon cho cùng một nghĩa ở mọi nơi.**
|
|
10
|
+
|
|
11
|
+
## Cỡ
|
|
12
|
+
|
|
13
|
+
**Chọn cỡ theo chữ đứng cạnh icon.**
|
|
14
|
+
|
|
15
|
+
| Cỡ | Dùng cho |
|
|
16
|
+
|---|---|
|
|
17
|
+
| 16 px | Mặc định. Nút, menu, bảng, ô nhập, cạnh chữ 14 px. |
|
|
18
|
+
| 20 px | Cạnh chữ 16 px, trong thanh công cụ và page header. |
|
|
19
|
+
| 24 px | Icon đứng riêng, như trạng thái trong card hoặc trạng thái trống nhỏ. |
|
|
20
|
+
| 32 px | Chỉ cho trạng thái trống. |
|
|
21
|
+
|
|
22
|
+
Không dùng cỡ khác. Không phóng to thu nhỏ icon cho vừa khung: hãy đổi khung.
|
|
23
|
+
|
|
24
|
+
<IconDemo kind="dodont" item="size" />
|
|
25
|
+
|
|
26
|
+
## Nét
|
|
27
|
+
|
|
28
|
+
**Giữ nguyên nét của Lucide.** Nét dày 2 đơn vị trên lưới 24 và co giãn theo icon: 1,33 px ở cỡ 16, 1,67 px ở cỡ 20, 2 px ở cỡ 24. Không đặt `stroke-width` hay `absoluteStrokeWidth`. Nét cố định 2 px sẽ lấp mất chi tiết nhỏ của icon 16 px.
|
|
29
|
+
|
|
30
|
+
<IconDemo kind="dodont" item="stroke" />
|
|
31
|
+
|
|
32
|
+
## Màu
|
|
33
|
+
|
|
34
|
+
**Icon lấy màu của chữ.** Icon vẽ bằng `currentColor`, nên icon trong nút hay link tự đúng màu mà không cần thêm code. Chỉ đặt màu bằng token `color.icon.*`:
|
|
35
|
+
|
|
36
|
+
<ColorDemo kind="roles" group="icon" />
|
|
37
|
+
|
|
38
|
+
- Icon trạng thái dùng token trạng thái, như `icon.danger`, và luôn đi kèm trạng thái viết bằng chữ.
|
|
39
|
+
- Không tô màu icon để trang trí, và không bao giờ dùng màu vàng thương hiệu cho icon.
|
|
40
|
+
|
|
41
|
+
<IconDemo kind="dodont" item="colour" />
|
|
42
|
+
|
|
43
|
+
## Căn với chữ
|
|
44
|
+
|
|
45
|
+
**Căn icon vào giữa line height của chữ.** Dùng `display: flex; align-items: center`. Khi chữ có nhiều dòng, căn icon vào giữa dòng đầu tiên.
|
|
46
|
+
|
|
47
|
+
<IconDemo kind="align" />
|
|
48
|
+
|
|
49
|
+
<IconDemo kind="dodont" item="align" />
|
|
50
|
+
|
|
51
|
+
## Khoảng cách
|
|
52
|
+
|
|
53
|
+
**Khoảng cách giữa icon và chữ theo cỡ chữ: 4 px cạnh chữ 14 px trở xuống, 8 px cạnh chữ 16 px trở lên.**
|
|
54
|
+
|
|
55
|
+
| Chữ | Icon | Khoảng cách | Token | Ở đâu |
|
|
56
|
+
|---|---|---|---|---|
|
|
57
|
+
| 12 hoặc 14 px | 16 px | 4 px | `space.050` | Control cỡ nhỏ và mặc định, menu, tab, ô trong bảng |
|
|
58
|
+
| Từ 16 px trở lên | 20 hoặc 24 px | 8 px | `space.100` | Control cỡ lớn, thanh công cụ, page header, trạng thái trong card |
|
|
59
|
+
|
|
60
|
+
Đặt khoảng cách trên control bằng `gap`, không dùng margin trên icon.
|
|
61
|
+
|
|
62
|
+
<IconDemo kind="spacing" />
|
|
63
|
+
|
|
64
|
+
## Icon và nhãn
|
|
65
|
+
|
|
66
|
+
**Mặc định icon có nhãn đi kèm.** Nhãn nói điều gì sẽ xảy ra; icon giúp người dùng tìm lại nhanh.
|
|
67
|
+
|
|
68
|
+
Chỉ dùng icon đứng riêng khi cả ba điều sau đều đúng:
|
|
69
|
+
|
|
70
|
+
- Thao tác ai cũng biết: đóng, tìm kiếm, thêm, sửa, xoá, sao chép, làm mới, cài đặt, lọc, thêm tuỳ chọn, menu.
|
|
71
|
+
- Chỗ hẹp, như một dòng trong bảng hay thanh công cụ.
|
|
72
|
+
- Nút có tên (`aria-label`) và tooltip cùng nội dung. Xem [Khả năng tiếp cận](/vi/foundations/styles/icons/accessibility/).
|
|
73
|
+
|
|
74
|
+
<IconDemo kind="dodont" item="label" />
|
|
75
|
+
|
|
76
|
+
## Trạng thái đã chọn
|
|
77
|
+
|
|
78
|
+
**Icon Lucide chỉ có dạng nét.** Thể hiện mục đã chọn bằng `background.selected` và thanh chỉ báo, không tô đặc icon.
|
|
79
|
+
|
|
80
|
+
<IconDemo kind="dodont" item="selected" />
|
|
81
|
+
|
|
82
|
+
## Thao tác thường gặp
|
|
83
|
+
|
|
84
|
+
**Mỗi nghĩa một icon.** Dùng đúng icon này mỗi khi hiển thị một trong các thao tác hay đối tượng dưới đây, ở mọi sản phẩm. Nếu chưa có nghĩa bạn cần, hãy hỏi trước khi chọn, để nó được bổ sung vào đây.
|
|
85
|
+
|
|
86
|
+
<IconDemo kind="actions" />
|
|
87
|
+
|
|
88
|
+
<IconDemo kind="dodont" item="meaning" />
|
|
89
|
+
|
|
90
|
+
## Nên và không nên
|
|
91
|
+
|
|
92
|
+
| Nên | Không nên |
|
|
93
|
+
|---|---|
|
|
94
|
+
| Dùng cỡ 16, 20, 24 hoặc 32 px. | Phóng to thu nhỏ icon sang cỡ khác. |
|
|
95
|
+
| Giữ icon cùng màu chữ. | Tô màu icon để trang trí. |
|
|
96
|
+
| Thêm nhãn cho hầu hết icon. | Dùng một icon lạ đứng riêng. |
|
|
97
|
+
| Dùng cùng icon cho cùng nghĩa. | Mỗi sản phẩm dùng một icon khác nhau. |
|
|
98
|
+
| Dùng icon nét với nền "đã chọn". | Tô đặc icon để báo đã chọn. |
|
|
99
|
+
| Viết trạng thái bên cạnh icon trạng thái. | Để icon hoặc màu của nó tự báo trạng thái. |
|
|
100
|
+
| Mỗi nút một icon. | Ghép hai icon thành một thao tác. |
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Hình minh hoạ"
|
|
3
|
+
description: "Sơ đồ, hình minh hoạ và hình ảnh giải thích sản phẩm Beehexa."
|
|
4
|
+
order: 14
|
|
5
|
+
planned:
|
|
6
|
+
- "Khi nào dùng sơ đồ, hình minh hoạ hay ảnh chụp màn hình"
|
|
7
|
+
- "Phong cách sơ đồ theo brand guide: có cấu trúc, dựng trên lưới lục giác"
|
|
8
|
+
- "Hình cho trạng thái trống và onboarding"
|
|
9
|
+
---
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Trạng thái tương tác
|
|
3
|
+
description: Control trông thế nào khi được hover, focus, nhấn, chọn hoặc bị vô hiệu.
|
|
4
|
+
order: 10
|
|
5
|
+
---
|
|
6
|
+
import TokenTable from '../../../components/TokenTable.astro';
|
|
7
|
+
|
|
8
|
+
Mọi thành phần tương tác đều cần đủ các trạng thái này. Mỗi trạng thái có token màu riêng, nên mọi component hiển thị nó giống nhau và chạy đúng ở giao diện sáng lẫn tối mà không cần thêm code.
|
|
9
|
+
|
|
10
|
+
## Quy tắc
|
|
11
|
+
|
|
12
|
+
1. Mỗi trạng thái dùng token riêng. Tìm token của thành phần ở trạng thái nghỉ, rồi thêm trạng thái: `color.background.neutral` ở trạng thái nghỉ thành `color.background.neutral.hover` khi hover và `color.background.neutral.pressed` khi nhấn.
|
|
13
|
+
2. Không bao giờ vẽ trạng thái bằng độ mờ, lớp phủ trong suốt, `filter: brightness()` hay màu pha trộn. Kết quả sẽ thay đổi theo thứ nằm bên dưới, và không kiểm tra được độ tương phản.
|
|
14
|
+
3. Không tự nghĩ ra màu hover hay màu nhấn. Nếu chưa có token bạn cần, hãy đề nghị thêm nó vào trang Màu sắc trước.
|
|
15
|
+
4. Focus bằng bàn phím luôn nhìn thấy được, trên mọi thành phần nhận được focus. Hover không bao giờ là cách duy nhất để hiện một thứ gì đó.
|
|
16
|
+
|
|
17
|
+
## Từng trạng thái
|
|
18
|
+
|
|
19
|
+
| Trạng thái | Khi nào | Nền | Chữ và icon | Viền |
|
|
20
|
+
| --- | --- | --- | --- | --- |
|
|
21
|
+
| Nghỉ (rest) | Không có gì xảy ra. | Token của thành phần, như `color.background.neutral` hoặc `color.background.danger.bold` | Token chữ đi cặp với nền (xem Màu sắc, phần Ghép cặp) | `color.border` hoặc `color.border.bold` |
|
|
22
|
+
| Hover | Con trỏ đang nằm trên thành phần. | Cùng token, thêm `.hover`: lên một bậc trên thang màu | Không đổi | Không đổi |
|
|
23
|
+
| Nhấn (pressed) | Thành phần đang được click hoặc chạm. | Cùng token, thêm `.pressed`: lên hai bậc | Không đổi | Không đổi |
|
|
24
|
+
|
|
25
|
+
Nút chính là ngoại lệ duy nhất. Nút này nằm ở graphite 12, bậc cuối của thang, nên không còn bậc nào phía trên: khi hover nó lùi một bậc (graphite 11), khi nhấn lùi hai bậc (graphite 10). Token của nút đã làm sẵn việc này.
|
|
26
|
+
| Focus | Thành phần đang có focus từ bàn phím (`:focus-visible`). | Không đổi | Không đổi | Thêm viền: `outline: var(--bh-border-width-focused) solid var(--bh-color-border-focus); outline-offset: var(--bh-state-focus-offset);` |
|
|
27
|
+
| Được chọn (selected) | Thành phần đã được chọn, như một dòng trong bảng, một tab hay một mục menu. | `color.background.selected`, và `color.background.selected.hover` khi hover | Không đổi, kèm một dấu hiệu thứ hai: dấu tích, vạch chỉ báo màu vàng (`color.border.selected`) hoặc chữ đậm trong menu | Không đổi |
|
|
28
|
+
| Vô hiệu (disabled) | Thành phần tạm thời không dùng được. | `color.background.disabled` | `color.text.disabled`, `color.icon.disabled` | `color.border.disabled` |
|
|
29
|
+
|
|
30
|
+
## Dòng, mục menu và nút ghost
|
|
31
|
+
|
|
32
|
+
Thành phần không có nền ở trạng thái nghỉ dùng `color.background.neutral.subtle`, là màu trong suốt. Khi hover, chúng dùng `color.background.neutral.subtle.hover`; khi nhấn, dùng `color.background.neutral.subtle.pressed`.
|
|
33
|
+
|
|
34
|
+
## Vô hiệu
|
|
35
|
+
|
|
36
|
+
- Dùng ba token màu vô hiệu ở trên. Không giảm độ mờ.
|
|
37
|
+
- Bỏ tương tác bằng chuột và bàn phím (`disabled` với control gốc của HTML, `aria-disabled="true"` kèm chặn sự kiện với các thành phần khác) và hiện `cursor: not-allowed`.
|
|
38
|
+
- WCAG không yêu cầu độ tương phản cho control bị vô hiệu, nên các màu vô hiệu được cố ý làm nhạt.
|
|
39
|
+
- Nên cho người dùng biết vì sao không dùng được, ví dụ bằng helper text, thay vì để control bị vô hiệu mà không giải thích.
|
|
40
|
+
|
|
41
|
+
## Giao diện tối
|
|
42
|
+
|
|
43
|
+
Các token này dùng được ở giao diện tối. Ở giao diện tối, nền sáng lên khi hover và khi nhấn thay vì tối đi, còn nút chính lùi khỏi graphite 12 theo cùng cách; token đã làm sẵn việc này, nên code không đổi.
|
|
44
|
+
|
|
45
|
+
## Token
|
|
46
|
+
|
|
47
|
+
Các màu nằm ở trang [Màu sắc](/vi/foundations/styles/color/). Độ dày focus ring, `border.width.focused`, nằm ở trang [Viền](/vi/foundations/styles/border/). Nhóm này chứa khoảng cách giữa control và ring.
|
|
48
|
+
|
|
49
|
+
<TokenTable prefix="state" />
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Khung ứng dụng
|
|
3
|
+
description: Header, menu bên và page header lặp lại trên mọi trang, kích thước của chúng, và khoảng cách giúp chúng thẳng hàng.
|
|
4
|
+
order: 1
|
|
5
|
+
---
|
|
6
|
+
import LayoutDemo from '../../../../components/LayoutDemo.astro';
|
|
7
|
+
|
|
8
|
+
**Header, menu bên và page header lặp lại trên mọi trang, ở cùng vị trí và cùng kích thước.**
|
|
9
|
+
|
|
10
|
+
## Header
|
|
11
|
+
|
|
12
|
+
**Cao 48 px, trải hết chiều ngang. Chứa những gì thuộc về cả sản phẩm.**
|
|
13
|
+
|
|
14
|
+
| Phần | Giá trị |
|
|
15
|
+
|---|---|
|
|
16
|
+
| Chiều cao | 48 px: một control 32 px, cách 8 px phía trên và phía dưới. Đường kẻ 1 px dưới header không tính vào |
|
|
17
|
+
| Chứa | Nút menu (dưới 1024 px), logo, tìm kiếm toàn cục, chuyển workspace, thông báo, tài khoản |
|
|
18
|
+
| Không chứa | Breadcrumb và nút hành động của trang. Chúng đổi theo từng trang, nên nằm trong page header |
|
|
19
|
+
|
|
20
|
+
## Menu bên
|
|
21
|
+
|
|
22
|
+
**Rộng 280 px khi mở, thu thành rail 64 px khi gọn, thành drawer khi dưới 1024 px. Mọi sản phẩm Beehexa dùng cùng các độ rộng này.**
|
|
23
|
+
|
|
24
|
+
| Cửa sổ | Menu bên |
|
|
25
|
+
|---|---|
|
|
26
|
+
| Dưới 1024 px | Ẩn. Nút menu trên header mở nó thành drawer phủ lên trang. |
|
|
27
|
+
| Từ 1024 px trở lên | Mở ở 280 px. Người dùng có thể thu gọn thành rail 64 px, và lựa chọn này được ghi nhớ. |
|
|
28
|
+
|
|
29
|
+
- **280 px** chứa vừa nhãn khoảng 31 ký tự ở cỡ 14 px, kể cả nhãn tiếng Việt dài.
|
|
30
|
+
- **Cùng một độ rộng ở mọi sản phẩm**, để trang luôn bắt đầu ở cùng một chỗ khi người dùng chuyển giữa các sản phẩm.
|
|
31
|
+
- **Không kéo giãn.** Một độ rộng duy nhất giữ các sản phẩm giống nhau. Panel kéo giãn được còn cần thêm cách đổi cỡ không phải kéo (WCAG 2.5.7).
|
|
32
|
+
- **Rail** chỉ hiện icon. Nhãn của từng mục hiện trong tooltip.
|
|
33
|
+
|
|
34
|
+
### Nhãn dài
|
|
35
|
+
|
|
36
|
+
<LayoutDemo kind="navlabels" />
|
|
37
|
+
|
|
38
|
+
1. Trước hết, viết nhãn ngắn hơn.
|
|
39
|
+
2. Nếu vẫn không vừa, cắt bằng dấu ba chấm và hiện nhãn đầy đủ trong tooltip, chỉ khi nhãn bị cắt.
|
|
40
|
+
3. Không bao giờ nới rộng menu bên vì một nhãn. Sản phẩm có nhãn dài ở khắp nơi có thể chọn một độ rộng từ 240 đến 320 px cho toàn sản phẩm, và ghi lại quyết định đó.
|
|
41
|
+
|
|
42
|
+
## Page header
|
|
43
|
+
|
|
44
|
+
**Phần đầu của mọi trang: breadcrumb, tiêu đề, trạng thái và nút hành động của trang.**
|
|
45
|
+
|
|
46
|
+
<LayoutDemo kind="pageheader" />
|
|
47
|
+
|
|
48
|
+
| Hàng | Chứa | Khi nào |
|
|
49
|
+
|---|---|---|
|
|
50
|
+
| Breadcrumb | Các trang cấp trên của trang này | Từ cấp thứ hai trở xuống |
|
|
51
|
+
| Hàng tiêu đề | Tiêu đề trang (`heading.large`) và trạng thái ở bên trái; nút hành động của trang ở bên phải, nút chính đứng cuối | Luôn có |
|
|
52
|
+
| Mô tả | Một dòng giới thiệu trang | Không bắt buộc |
|
|
53
|
+
| Tab hoặc bộ lọc | Các góc nhìn của cùng một trang | Không bắt buộc |
|
|
54
|
+
|
|
55
|
+
- **Page header trải hết vùng nội dung ở mọi độ rộng trang.** Chỉ phần nội dung bên dưới theo [Full, Wide hoặc Narrow](/vi/foundations/styles/layout/page-widths/), nên tiêu đề và nút hành động của trang luôn nằm cùng một chỗ trên mọi trang.
|
|
56
|
+
- Breadcrumb thuộc về trang, không thuộc header: nó đổi theo từng trang, còn header thì giữ nguyên.
|
|
57
|
+
- Ngữ cảnh của cả sản phẩm, như workspace, nằm trên header.
|
|
58
|
+
|
|
59
|
+
## Panel bên
|
|
60
|
+
|
|
61
|
+
Panel đặt cạnh nội dung chính, như chi tiết của dòng đang chọn, chiếm các cột của lưới: 4 trên 12 cột từ 1024 px và 3 trên 12 cột từ 1440 px. Dưới 1024 px nó mở thành drawer phủ lên trang. Xem phần span ở trang [Lưới](/vi/foundations/styles/layout/grid/#span).
|
|
62
|
+
|
|
63
|
+
## Khoảng cách trong khung
|
|
64
|
+
|
|
65
|
+
**Mọi thứ trong khung thẳng hàng theo hai mép: cách mép trái cửa sổ 20 px, và lề trang.**
|
|
66
|
+
|
|
67
|
+
| Giữa | Khoảng cách |
|
|
68
|
+
|---|---|
|
|
69
|
+
| Mép cửa sổ và logo; mép cửa sổ và icon của menu bên | 20 px, `space.250` |
|
|
70
|
+
| Các mục trong menu bên và mép của menu | 8 px, `space.100` |
|
|
71
|
+
| Hai mục liền nhau trong menu bên (mỗi mục cao 32 px) | 4 px, `space.050` |
|
|
72
|
+
| Nội dung và menu bên, header hoặc mép cửa sổ | Lề trang: 16, 24 hoặc 32 px ([Lưới](/vi/foundations/styles/layout/grid/)) |
|
|
73
|
+
| Breadcrumb và tiêu đề | 8 px, `space.100` |
|
|
74
|
+
| Tiêu đề và mô tả | 4 px, `space.050` |
|
|
75
|
+
| Page header và nội dung | 24 px, `space.300` |
|
|
76
|
+
|
|
77
|
+
Mép 20 px của logo lấy từ menu bên: 8 px thụt vào cộng 12 px padding ngang của một control 32 px. Nhờ vậy logo nằm ngay trên các icon.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Breakpoint
|
|
3
|
+
description: Bốn độ rộng cửa sổ nơi bố cục Beehexa thay đổi, mỗi mốc đổi những gì, và thứ tự thiết kế.
|
|
4
|
+
order: 4
|
|
5
|
+
---
|
|
6
|
+
import LayoutDemo from '../../../../components/LayoutDemo.astro';
|
|
7
|
+
import TokenTable from '../../../../components/TokenTable.astro';
|
|
8
|
+
|
|
9
|
+
**Bố cục đổi ở ba độ rộng cửa sổ: 768, 1024 và 1440 px. Mọi màn hình cũng phải dùng được ở 320 px.**
|
|
10
|
+
|
|
11
|
+
<LayoutDemo kind="breakpoints" />
|
|
12
|
+
|
|
13
|
+
## Những gì thay đổi
|
|
14
|
+
|
|
15
|
+
| Breakpoint | Từ | Cửa sổ | Thay đổi |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
| `xs` | 0 | Điện thoại và cửa sổ nhỏ | Một bố cục co giãn: 4 cột, gutter và lề trang 16 px, nội dung một cột. Menu bên nằm trong drawer. |
|
|
18
|
+
| `md` | 768 px | Máy tính bảng, cửa sổ hẹp | 8 cột. Gutter và lề trang 24 px. Menu bên vẫn nằm trong drawer. |
|
|
19
|
+
| `lg` | 1024 px | Laptop, kể cả màn hình 1280 và 1366 px | 12 cột. Menu bên mở ở 280 px, hoặc thu thành rail 64 px. Có thể đặt panel bên cạnh panel chính. |
|
|
20
|
+
| `xl` | 1440 px | Máy bàn, kể cả màn hình 1536 và 1920 px | Lề trang 32 px. Bốn card một hàng. |
|
|
21
|
+
|
|
22
|
+
- **Dưới 768 px là một bố cục.** Các cột giãn theo cửa sổ, từ 320 đến 767 px. Card hay bảng bên trong vẫn có thể đổi theo độ rộng khung chứa của chính nó, bằng container query.
|
|
23
|
+
- **320 px không phải là breakpoint.** Đó là cửa sổ hẹp nhất mà mọi màn hình phải dùng được, cũng chính là cửa sổ 1280 px phóng to 400% (WCAG 1.4.10).
|
|
24
|
+
|
|
25
|
+
## Thứ tự thiết kế
|
|
26
|
+
|
|
27
|
+
**Thiết kế cho máy tính trước, rồi điều chỉnh màn hình cho cửa sổ nhỏ hơn. Viết CSS từ cửa sổ nhỏ nhất trở lên.**
|
|
28
|
+
|
|
29
|
+
Sản phẩm Beehexa chủ yếu được dùng trên máy tính, nên màn hình chính bắt đầu từ độ rộng người dùng hay dùng nhất.
|
|
30
|
+
|
|
31
|
+
1. Thiết kế ở 1440 px, và kiểm tra ở 1280 px.
|
|
32
|
+
2. Điều chỉnh cho 1024 px, rồi 768 px.
|
|
33
|
+
3. Điều chỉnh cho 360 px, và kiểm tra ở 320 px.
|
|
34
|
+
|
|
35
|
+
Trong code, style gốc dành cho cửa sổ nhỏ nhất, và mỗi breakpoint bổ sung thêm bằng `min-width`. Làm vậy thì ít quy tắc phải gỡ ngược lại hơn.
|
|
36
|
+
|
|
37
|
+
## Kiểm tra mọi màn hình ở
|
|
38
|
+
|
|
39
|
+
| Cửa sổ | Vì sao |
|
|
40
|
+
|---|---|
|
|
41
|
+
| 1440 và 1280 px | Máy bàn và laptop người dùng hay dùng nhất |
|
|
42
|
+
| 1024 px | Ngay trên mốc menu bên chuyển thành drawer |
|
|
43
|
+
| 768 px | Máy tính bảng, và mốc chuyển sang 8 cột |
|
|
44
|
+
| Khoảng 844 × 390 px | Điện thoại xoay ngang: đủ rộng cho bố cục máy tính bảng nhưng thấp |
|
|
45
|
+
| 360 và 320 px | Điện thoại, và cửa sổ hẹp nhất được phép |
|
|
46
|
+
| Phóng to 400% | Người dùng phóng to trang |
|
|
47
|
+
|
|
48
|
+
## Token
|
|
49
|
+
|
|
50
|
+
<TokenTable prefix="breakpoint" />
|
|
51
|
+
|
|
52
|
+
## Cách dùng
|
|
53
|
+
|
|
54
|
+
- Viết media query bằng `min-width`: `@media (min-width: 768px)`.
|
|
55
|
+
- Không dùng được CSS custom property trong media query. Dùng giá trị pixel của các token này.
|
|
56
|
+
- Đổi bố cục tại breakpoint, không bao giờ đổi token khoảng cách hay cỡ chữ bên trong component.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Lưới
|
|
3
|
+
description: Lưới co giãn 4, 8 hoặc 12 cột trong vùng nội dung chính, với gutter và lề trang lấy từ token khoảng cách.
|
|
4
|
+
order: 3
|
|
5
|
+
---
|
|
6
|
+
import LayoutDemo from '../../../../components/LayoutDemo.astro';
|
|
7
|
+
|
|
8
|
+
**Dàn vùng nội dung chính trên 4 cột ở điện thoại, 8 cột ở máy tính bảng và 12 cột từ 1024 px.**
|
|
9
|
+
|
|
10
|
+
<LayoutDemo kind="grid" />
|
|
11
|
+
|
|
12
|
+
## Cột, gutter và lề
|
|
13
|
+
|
|
14
|
+
| Cửa sổ | Số cột | Gutter | Lề trang |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| Dưới 768 px | 4 | 16 px | 16 px |
|
|
17
|
+
| 768 đến 1023 px | 8 | 24 px | 24 px |
|
|
18
|
+
| 1024 đến 1439 px | 12 | 24 px | 24 px |
|
|
19
|
+
| Từ 1440 px trở lên | 12 | 24 px | 32 px |
|
|
20
|
+
|
|
21
|
+
Các giá trị đều là token khoảng cách: 16 px là `space.200`, 24 px là `space.300` và 32 px là `space.400`. Các khoảng bắt đầu tại breakpoint `md`, `lg` và `xl`.
|
|
22
|
+
|
|
23
|
+
- **12 cột** chia được thành nửa, một phần ba, một phần tư và một phần sáu.
|
|
24
|
+
- **4 cột trên điện thoại** cho hai nửa hoặc bốn phần tư. **8 cột trên máy tính bảng** giữ nguyên các nửa và phần tư đó nhưng rộng rãi hơn.
|
|
25
|
+
- **Gutter** là 16 px trên điện thoại và 24 px từ 768 px, khi đã đủ chỗ để tách các card rõ hơn.
|
|
26
|
+
- **Lề trang** bắt đầu từ 16 px và tăng lên 32 px trên màn hình rộng, để nội dung không chạm mép cửa sổ lớn.
|
|
27
|
+
- **Mọi giá trị đều là token khoảng cách và là bội số của 8 px**, như line height của chữ, nên card, chữ và control thẳng hàng với nhau.
|
|
28
|
+
|
|
29
|
+
Dùng cùng gutter giữa các hàng, để card cách nhau theo chiều dọc bằng theo chiều ngang.
|
|
30
|
+
|
|
31
|
+
## Cột co giãn
|
|
32
|
+
|
|
33
|
+
**Cột giãn theo cửa sổ. Gutter và lề giữ cố định trong mỗi khoảng.**
|
|
34
|
+
|
|
35
|
+
Cửa sổ rộng hơn thì cột rộng hơn, không phải thêm khoảng trống. Tới breakpoint kế tiếp, gutter, lề hoặc số cột mới thay đổi.
|
|
36
|
+
|
|
37
|
+
## Lưới nằm ở đâu
|
|
38
|
+
|
|
39
|
+
**Lưới chỉ trải trên vùng nội dung chính.**
|
|
40
|
+
|
|
41
|
+
- Header và menu bên không nằm trên lưới. Lưới bắt đầu từ chỗ menu bên kết thúc, nên các cột luôn chia đều vùng nội dung.
|
|
42
|
+
- Menu bên giữ độ rộng cố định thay vì chiếm cột. Nếu tính bằng cột, nó sẽ to nhỏ theo cửa sổ, và khi thu thành rail thì số cột bị lệch.
|
|
43
|
+
- Breakpoint vẫn đọc theo độ rộng cửa sổ. Mở hay thu gọn menu bên không làm đổi breakpoint.
|
|
44
|
+
- Nội dung trong panel hoặc card có thể theo độ rộng của khung chứa nó, bằng container query.
|
|
45
|
+
- Trên trang Wide hoặc Narrow, lưới lấp đầy độ rộng đã giới hạn. Xem [Độ rộng trang](/vi/foundations/styles/layout/page-widths/).
|
|
46
|
+
|
|
47
|
+
## Span
|
|
48
|
+
|
|
49
|
+
Span là số cột một phần tử chiếm.
|
|
50
|
+
|
|
51
|
+
| Bố cục | Dưới 768 px (trên 4) | 768 px (trên 8) | 1024 px (trên 12) | 1440 px (trên 12) |
|
|
52
|
+
|---|---|---|---|---|
|
|
53
|
+
| Card, 1 đến 4 card một hàng | 4 | 4 | 4 | 3 |
|
|
54
|
+
| Panel chính và panel bên | 4 | 8 | 8 + 4 | 9 + 3 |
|
|
55
|
+
| Ô tóm tắt | 2 | 2 | 3 | 2 |
|
|
56
|
+
|
|
57
|
+
Trong CSS, lưới chỉ cần vài dòng:
|
|
58
|
+
|
|
59
|
+
```css
|
|
60
|
+
.page-grid {
|
|
61
|
+
display: grid;
|
|
62
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
63
|
+
gap: var(--bh-space-200);
|
|
64
|
+
padding-inline: var(--bh-space-200);
|
|
65
|
+
}
|
|
66
|
+
@media (min-width: 768px) {
|
|
67
|
+
.page-grid {
|
|
68
|
+
grid-template-columns: repeat(8, minmax(0, 1fr));
|
|
69
|
+
gap: var(--bh-space-300);
|
|
70
|
+
padding-inline: var(--bh-space-300);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
@media (min-width: 1024px) {
|
|
74
|
+
.page-grid { grid-template-columns: repeat(12, minmax(0, 1fr)); }
|
|
75
|
+
}
|
|
76
|
+
@media (min-width: 1440px) {
|
|
77
|
+
.page-grid { padding-inline: var(--bh-space-400); }
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Thứ gì đặt trên lưới
|
|
82
|
+
|
|
83
|
+
- Các vùng của trang căn theo cột: card, panel, cột form, ô tóm tắt.
|
|
84
|
+
- Control bên trong một vùng thì không. Trong card, dùng token khoảng cách.
|
|
85
|
+
- Bảng dữ liệu lấp đầy vùng của nó. Không chia cột bảng theo lưới.
|
|
86
|
+
|
|
87
|
+
Xem [Breakpoint](/vi/foundations/styles/layout/breakpoints/) để biết khi nào lưới thay đổi.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Bố cục
|
|
3
|
+
description: Khung chung của mọi ứng dụng Beehexa (header, menu bên, page header và nội dung) và các trang quy định kích thước của nó.
|
|
4
|
+
order: 4
|
|
5
|
+
sidebarLabel: Tổng quan
|
|
6
|
+
---
|
|
7
|
+
import LayoutDemo from '../../../../components/LayoutDemo.astro';
|
|
8
|
+
|
|
9
|
+
**Mọi ứng dụng Beehexa dùng chung một khung: header chạy ngang phía trên, menu bên ở bên trái, và trang nằm cạnh menu.**
|
|
10
|
+
|
|
11
|
+
Người dùng chuyển qua lại giữa các màn hình cả ngày. Khi menu, ô tìm kiếm và các nút hành động của trang luôn ở cùng một chỗ, họ tìm thấy mà không cần nhìn.
|
|
12
|
+
|
|
13
|
+
<LayoutDemo kind="anatomy" />
|
|
14
|
+
|
|
15
|
+
## Mỗi phần được quy định ở đâu
|
|
16
|
+
|
|
17
|
+
| Phần | Quy định gì | Trang |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| Header, menu bên, page header | Các phần lặp lại trên mọi trang, kích thước và khoảng cách giữa chúng | [Khung ứng dụng](/vi/foundations/styles/layout/app-frame/) |
|
|
20
|
+
| Độ rộng nội dung | Full, Wide hoặc Narrow, theo nội dung của trang | [Độ rộng trang](/vi/foundations/styles/layout/page-widths/) |
|
|
21
|
+
| Cột | Cột, gutter và lề trang trong vùng nội dung | [Lưới](/vi/foundations/styles/layout/grid/) |
|
|
22
|
+
| Độ rộng cửa sổ | Bố cục đổi ở đâu, và thứ tự thiết kế | [Breakpoint](/vi/foundations/styles/layout/breakpoints/) |
|
|
23
|
+
| Chiều cao control | 24, 32 và 40 px, và mật độ | [Kích thước và mật độ](/vi/foundations/styles/size-and-density/) |
|
|
24
|
+
| Khoảng cách giữa các phần tử | Các bậc khoảng cách | [Khoảng cách](/vi/foundations/styles/spacing/) |
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Độ rộng trang
|
|
3
|
+
description: Nội dung Full, Wide hoặc Narrow, chọn theo nội dung của trang, và độ dài một dòng chữ.
|
|
4
|
+
order: 2
|
|
5
|
+
---
|
|
6
|
+
import LayoutDemo from '../../../../components/LayoutDemo.astro';
|
|
7
|
+
|
|
8
|
+
**Mỗi trang chọn một trong ba độ rộng, theo nội dung của trang.**
|
|
9
|
+
|
|
10
|
+
<LayoutDemo kind="widths" />
|
|
11
|
+
|
|
12
|
+
| Độ rộng | Tối đa | Dùng cho |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| Full | Không giới hạn | Bảng, danh sách, log, trình dựng và canvas |
|
|
15
|
+
| Wide | 1280 px | Dashboard, trang chi tiết, trang tổng quan cài đặt, trang thông thường |
|
|
16
|
+
| Narrow | 768 px | Form, form cài đặt, các bước wizard, trang hướng dẫn và tài liệu |
|
|
17
|
+
|
|
18
|
+
- **Full.** Bảng và log hiện được nhiều cột, nhiều dòng hơn khi dùng hết cửa sổ.
|
|
19
|
+
- **Wide.** Card và panel giữ cỡ vừa mắt để lướt nhanh trên màn hình lớn.
|
|
20
|
+
- **Narrow.** Form một cột điền nhanh, mắt không phải đi xa từ nhãn tới ô nhập.
|
|
21
|
+
- Mức tối đa là độ rộng của nội dung. Lề trang nằm ngoài mức này.
|
|
22
|
+
- Độ rộng chỉ áp dụng cho nội dung. [Page header](/vi/foundations/styles/layout/app-frame/#page-header) phía trên luôn trải hết vùng nội dung, nên tiêu đề và các nút hành động của trang không xê dịch khi chuyển trang.
|
|
23
|
+
|
|
24
|
+
## Căn chỉnh
|
|
25
|
+
|
|
26
|
+
**Nội dung Wide hoặc Narrow được căn giữa trong vùng bên cạnh menu bên. Page header vẫn trải hết vùng.**
|
|
27
|
+
|
|
28
|
+
Khi menu bên mở hoặc đóng, trang dời theo tâm mới.
|
|
29
|
+
|
|
30
|
+
## Chữ chạy dài
|
|
31
|
+
|
|
32
|
+
**Chữ chạy hết chiều rộng cột của nó. Để dòng không quá dài, đặt nội dung chữ dài trên trang Narrow.**
|
|
33
|
+
|
|
34
|
+
Cột Narrow 768 px chứa khoảng 100 ký tự mỗi dòng với chữ 16 px. Trang hướng dẫn hay tài liệu là trang Narrow; mục lục đặt bên cạnh không tính vào 768 px.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Tải về và điều khoản
|
|
3
|
+
description: Mọi file logo, file nào dùng cho việc gì, mã màu, giấy phép font và điều khoản dùng nhãn hiệu Beehexa.
|
|
4
|
+
order: 5
|
|
5
|
+
audience: designer, developer, đối tác, báo chí
|
|
6
|
+
owner: Brand
|
|
7
|
+
updated: 2026-10-24
|
|
8
|
+
---
|
|
9
|
+
import LogoHero from '../../../../components/logos/LogoHero.astro';
|
|
10
|
+
|
|
11
|
+
## Gói file
|
|
12
|
+
|
|
13
|
+
<LogoHero />
|
|
14
|
+
|
|
15
|
+
| Thư mục | Nội dung |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `lockups/` | Lockup beehexa và HexaSync, mỗi loại bốn bản màu, SVG, artboard đã có vùng trống |
|
|
18
|
+
| `icon/` | Icon màu vàng, trắng và xám ghi, SVG, có vùng trống |
|
|
19
|
+
| `favicon-web/` | favicon.svg, favicon.ico và favicon PNG 16, 32, 48 px, apple-touch-icon, icon web app 192 và 512 px, icon maskable, avatar 800 px, site.webmanifest |
|
|
20
|
+
| `license/` | Giấy phép SIL Open Font License của Inter |
|
|
21
|
+
| `README.md` | Tóm tắt luật |
|
|
22
|
+
|
|
23
|
+
## Dùng file nào
|
|
24
|
+
|
|
25
|
+
| Bạn cần | Dùng |
|
|
26
|
+
|---|---|
|
|
27
|
+
| Logo trên website hoặc ứng dụng | Ảnh PNG xuất ở 3× từ `lockups/beehexa-horizontal-1-light.svg` (nền sáng) hoặc `-2-dark.svg` (nền tối), hiển thị ở 1×. Xem [hiển thị sắc nét](/vi/foundations/styles/logos/using-the-logo/#hiển-thị-sắc-nét). |
|
|
28
|
+
| Logo trong tài liệu, slide hoặc bản in | `lockups/beehexa-horizontal-1-light.svg` trên nền sáng, `-2-dark.svg` trên nền tối |
|
|
29
|
+
| Logo trên ảnh hoặc nền màu đậm | `-3-white.svg` |
|
|
30
|
+
| In một màu, khắc, đóng dấu | `-4-graphite.svg` |
|
|
31
|
+
| Favicon | `favicon-web/favicon.svg` và `favicon.ico` |
|
|
32
|
+
| Icon ứng dụng hoặc avatar mạng xã hội | `favicon-web/apple-touch-icon.png`, `icon-192.png`, `icon-512.png`, `icon-maskable-512.png`, `avatar-800.png` |
|
|
33
|
+
| Icon trong bố cục của bạn | `icon/beehexa-icon-*.svg` |
|
|
34
|
+
| PNG hoặc PDF | Xuất từ SVG ở đúng cỡ cần dùng. Không phóng to một file PNG nhỏ. |
|
|
35
|
+
|
|
36
|
+
## Mã màu
|
|
37
|
+
|
|
38
|
+
| Màu | HEX | RGB | In |
|
|
39
|
+
|---|---|---|---|
|
|
40
|
+
| Vàng | #FCB017 | 252 176 23 | Chưa chốt |
|
|
41
|
+
| Xám ghi | #2B2A28 | 43 42 40 | Chưa chốt |
|
|
42
|
+
| Trắng | #FFFFFF | 255 255 255 | Màu giấy |
|
|
43
|
+
|
|
44
|
+
Mã CMYK và Pantone sẽ có sau khi in thử. Brand guide 2025 ghi PMS 1235 C cho màu vàng; hãy kiểm trên giấy trước khi dùng, vì màu vàng này in CMYK trên giấy không tráng phủ thường bị xỉn.
|
|
45
|
+
|
|
46
|
+
## Font chữ
|
|
47
|
+
|
|
48
|
+
Wordmark dùng Inter Display và đã chuyển thành nét vẽ, nên không cần cài font để dùng logo. Inter dùng giấy phép SIL Open Font License 1.1, cho phép dùng trong logo. Giấy phép có trong gói file.
|
|
49
|
+
|
|
50
|
+
## Nhãn hiệu
|
|
51
|
+
|
|
52
|
+
Logo Beehexa đã đăng ký nhãn hiệu tại Việt Nam, số 4-0358730-000, nhóm 9, 35 và 42. Việc đăng ký cho logo như trên site này đang được xác nhận với đại diện sở hữu công nghiệp.
|
|
53
|
+
|
|
54
|
+
## Điều khoản sử dụng
|
|
55
|
+
|
|
56
|
+
> Bản nháp, chờ pháp lý duyệt. Câu hỏi gửi về [hello@beehexa.com](mailto:hello@beehexa.com?subject=Logo%20use).
|
|
57
|
+
|
|
58
|
+
Bạn được dùng logo Beehexa và HexaSync để nói về Beehexa, để thể hiện sản phẩm của bạn tích hợp với HexaSync, hoặc trong tin tức và bài đánh giá về chúng tôi, với điều kiện:
|
|
59
|
+
|
|
60
|
+
- dùng file trong gói mà không chỉnh sửa, theo trang [Cách dùng logo](/vi/foundations/styles/logos/using-the-logo/);
|
|
61
|
+
- không ngụ ý Beehexa tài trợ, bảo chứng hay là đối tác của bạn nếu chưa có thoả thuận bằng văn bản;
|
|
62
|
+
- không dùng logo, icon hay hình na ná trong tên sản phẩm, logo, tên miền, icon ứng dụng hay tài khoản mạng xã hội của bạn;
|
|
63
|
+
- không để logo của chúng tôi là thành phần nổi bật nhất trong tài liệu của bạn.
|
|
64
|
+
|
|
65
|
+
Chúng tôi có thể yêu cầu bạn sửa hoặc ngừng bất kỳ cách dùng logo nào.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Logo
|
|
3
|
+
description: Logo Beehexa và logo của từng sản phẩm, cùng các luật và file để dùng trên web, ấn phẩm in và trong sản phẩm.
|
|
4
|
+
order: 12
|
|
5
|
+
sidebarLabel: Tổng quan
|
|
6
|
+
audience: web, in ấn, giao diện sản phẩm
|
|
7
|
+
owner: Brand
|
|
8
|
+
updated: 2026-10-23
|
|
9
|
+
---
|
|
10
|
+
import LogoHero from '../../../../components/logos/LogoHero.astro';
|
|
11
|
+
import LogoAnatomy from '../../../../components/logos/LogoAnatomy.astro';
|
|
12
|
+
import LogoConstruction from '../../../../components/logos/LogoConstruction.astro';
|
|
13
|
+
import LogoMeanings from '../../../../components/logos/LogoMeanings.astro';
|
|
14
|
+
|
|
15
|
+
## Tải về
|
|
16
|
+
|
|
17
|
+
<LogoHero />
|
|
18
|
+
|
|
19
|
+
## Cấu tạo
|
|
20
|
+
|
|
21
|
+
Lockup gồm icon và wordmark đặt cạnh nhau. Mọi số đo dùng chung một đơn vị: cạnh của lục giác, cũng chính là x-height của wordmark.
|
|
22
|
+
|
|
23
|
+
<LogoAnatomy />
|
|
24
|
+
|
|
25
|
+
Chỉ có hai dạng: lockup ngang này và [icon đứng riêng](/vi/foundations/styles/logos/using-the-logo/#icon-đứng-riêng). Không có bản xếp dọc.
|
|
26
|
+
|
|
27
|
+
## Dựng hình
|
|
28
|
+
|
|
29
|
+
Icon được vẽ trên lưới tam giác đều, nên ai cũng vẽ lại được chính xác: một lục giác đều đỉnh nhọn, ba lớp, cạnh nghiêng 30°.
|
|
30
|
+
|
|
31
|
+
<LogoConstruction />
|
|
32
|
+
|
|
33
|
+
## Một icon, ba ý nghĩa
|
|
34
|
+
|
|
35
|
+
> Như con ong xây tổ, Beehexa ghép từng hệ thống thành một khối vững chắc, rồi đưa doanh nghiệp bay lên.
|
|
36
|
+
|
|
37
|
+
Ba ý nghĩa lồng vào nhau: phần vàng là thứ Beehexa xây, phần trắng là điều Beehexa mang lại.
|
|
38
|
+
|
|
39
|
+
<LogoMeanings />
|
|
40
|
+
|
|
41
|
+
## Tóm tắt luật
|
|
42
|
+
|
|
43
|
+
| Luật | Giá trị | Chi tiết |
|
|
44
|
+
|---|---|---|
|
|
45
|
+
| Dạng logo | Lockup ngang; icon đứng riêng | [Cấu tạo](#cấu-tạo) |
|
|
46
|
+
| Bản màu | 4 bản, 3 màu: vàng #FCB017, xám ghi #2B2A28, trắng | [Bản màu](/vi/foundations/styles/logos/using-the-logo/#bản-màu) |
|
|
47
|
+
| Vùng trống | 1 x-height (một cạnh lục giác) ở mọi phía | [Vùng trống](/vi/foundations/styles/logos/using-the-logo/#vùng-trống) |
|
|
48
|
+
| Cỡ tối thiểu | Lockup rộng 100 px hoặc 25 mm; icon cao 16 px hoặc 6 mm | [Cỡ tối thiểu](/vi/foundations/styles/logos/using-the-logo/#cỡ-tối-thiểu) |
|
|
49
|
+
| Icon trên nền sáng | Xám ghi, hoặc vàng trên ô xám ghi | [Icon đứng riêng](/vi/foundations/styles/logos/using-the-logo/#icon-đứng-riêng) |
|
|
50
|
+
| Cách viết | Logo ghi “beehexa”, viết thường. Logo sản phẩm giữ cách viết của sản phẩm: “HexaSync”. Trong câu văn, viết Beehexa. | [Logo sản phẩm](/vi/foundations/styles/logos/product-logos/) |
|
|
51
|
+
|
|
52
|
+
## Khác gì so với logo 2018
|
|
53
|
+
|
|
54
|
+
| | Logo 2018 | Logo mới |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| Font chữ | Ubuntu, font của hãng khác, thiếu chữ tiếng Việt | Inter Display, font của Beehexa, đã chuyển thành nét vẽ |
|
|
57
|
+
| Màu chữ | Vàng | Xám ghi trên nền sáng, trắng trên nền tối |
|
|
58
|
+
| Icon | Không có lưới; nét mảnh hơn khe (0.8 : 1) | Lưới 28 dải; nét bằng khe (1 : 1), nét dày hơn 11% |
|
|
59
|
+
| Khoảng cách icon–chữ | Không có luật | 10 dải, đo từ chính icon |
|
|
60
|
+
| Vùng trống | Một lớp chevron, khoảng 0.22 × chiều cao icon | 1 x-height |
|
|
61
|
+
| Cỡ tối thiểu | 120 px hoặc 30 mm | 100 px hoặc 25 mm |
|
|
62
|
+
| Bản màu | Toàn bộ màu vàng | 4 bản |
|
|
63
|
+
|
|
64
|
+
Logo 2018 vẫn nằm trên các tài liệu đang có cho tới khi logo mới ra mắt. Không dùng nó cho việc mới.
|