From 0730557624a28835a85eec44e1d2a513e6961546 Mon Sep 17 00:00:00 2001 From: claude Date: Thu, 30 Jul 2026 08:34:50 -0400 Subject: [PATCH] Initial mirror of the HPE Design System Readable mirror of https://design-system.hpe.design, sourced from github.com/grommet/hpe-design-system (Apache-2.0) at commit 567c4d5 (2026-07-16). The upstream site is a client-rendered Next.js export with no sitemap; it returns a 1.5 KB empty shell to curl. This repo is the same guidance in plain Markdown with every value resolved, plus the assets checked in. Docs: scope and authority model, brand foundations with resolved color and spacing tables, the design token tiers and version map, UI copy rules, accessibility conformance and the responsibility split, the component and template inventory, and an adoption/review checklist. Assets: 452 SVG icons, 5 HPE and Aruba word-marks, 282 documentation graphics. HOWTO-mirror-the-design-system.md is a verified runbook for rebuilding this from scratch against a newer upstream. Colors were resolved programmatically, not transcribed: token JSON stores references, not values. Apache-2.0 upstream. Note that it covers copyright, not trademark; Brand Central remains authoritative for the HPE marks. --- 01-what-it-is.md | 112 +++++ 02-brand-foundations.md | 217 +++++++++ 03-design-tokens.md | 168 +++++++ 04-voice-and-tone.md | 186 ++++++++ 05-accessibility.md | 129 ++++++ 06-components-templates.md | 136 ++++++ 07-adoption-and-compliance.md | 144 ++++++ HOWTO-mirror-the-design-system.md | 417 ++++++++++++++++++ LICENSE | 176 ++++++++ README.md | 113 +++++ assets/README.md | 187 ++++++++ assets/brand/HPE_logo_full-clr_pos_rgb.svg | 1 + assets/brand/HPE_logo_full-clr_rev_rgb.svg | 1 + assets/brand/aruba-logo.svg | 8 + assets/brand/hpe-logo-invert.svg | 11 + assets/brand/hpe-logo.svg | 11 + assets/icons/AI-gen-fill.svg | 4 + assets/icons/AI-gen.svg | 3 + assets/icons/AI-systems.svg | 3 + assets/icons/COPYRIGHT.md | 1 + assets/icons/LICENSE | 177 ++++++++ assets/icons/accessibility.svg | 4 + assets/icons/achievement.svg | 4 + assets/icons/actions.svg | 3 + assets/icons/ad.svg | 5 + assets/icons/add.svg | 3 + assets/icons/aed.svg | 3 + assets/icons/aggregate.svg | 3 + assets/icons/aid.svg | 4 + assets/icons/alarm.svg | 4 + assets/icons/alert.svg | 5 + assets/icons/analytics.svg | 3 + assets/icons/anchor.svg | 3 + assets/icons/announce.svg | 3 + assets/icons/app.svg | 3 + assets/icons/apps.svg | 6 + assets/icons/archive.svg | 4 + assets/icons/article.svg | 7 + assets/icons/ascend.svg | 7 + assets/icons/ascending.svg | 3 + assets/icons/assist-listening.svg | 7 + assets/icons/atm.svg | 3 + assets/icons/attachment.svg | 3 + assets/icons/attraction.svg | 3 + assets/icons/baby.svg | 3 + assets/icons/back-ten.svg | 5 + assets/icons/bar.svg | 3 + assets/icons/battery-empty.svg | 3 + assets/icons/battery-full.svg | 3 + assets/icons/battery-low.svg | 3 + assets/icons/battery.svg | 3 + assets/icons/beacon.svg | 3 + assets/icons/bike.svg | 3 + assets/icons/blades-horizontal.svg | 3 + assets/icons/blades-vertical.svg | 3 + assets/icons/blog.svg | 3 + assets/icons/bluetooth.svg | 3 + assets/icons/book.svg | 3 + assets/icons/bookmark.svg | 3 + assets/icons/braille.svg | 6 + assets/icons/briefcase.svg | 3 + assets/icons/brush.svg | 3 + assets/icons/bucket.svg | 3 + assets/icons/bug.svg | 3 + assets/icons/bulb.svg | 3 + assets/icons/bundle.svg | 3 + assets/icons/bus.svg | 3 + assets/icons/business-service.svg | 3 + assets/icons/cafeteria.svg | 3 + assets/icons/calculator.svg | 3 + assets/icons/calendar.svg | 12 + assets/icons/camera.svg | 3 + assets/icons/car.svg | 3 + assets/icons/caret-down.svg | 3 + assets/icons/caret-left.svg | 3 + assets/icons/caret-right.svg | 3 + assets/icons/caret-up.svg | 3 + assets/icons/cart.svg | 5 + assets/icons/catalog.svg | 6 + assets/icons/certificate.svg | 6 + assets/icons/channel.svg | 3 + assets/icons/chapter-add.svg | 4 + assets/icons/chapter-next.svg | 3 + assets/icons/chapter-previous.svg | 3 + assets/icons/chart-bar.svg | 6 + assets/icons/chart-line.svg | 4 + assets/icons/chart-pie.svg | 5 + assets/icons/chat-conversation.svg | 3 + assets/icons/chat.svg | 5 + assets/icons/checkmark.svg | 3 + assets/icons/circle-empty.svg | 3 + assets/icons/circle-fill.svg | 3 + assets/icons/clear.svg | 3 + assets/icons/clipboard.svg | 3 + assets/icons/clock.svg | 4 + assets/icons/clone.svg | 8 + assets/icons/close.svg | 3 + assets/icons/closed-caption.svg | 5 + assets/icons/cloud-add.svg | 3 + assets/icons/cloud-computer.svg | 3 + assets/icons/cloud-download.svg | 3 + assets/icons/cloud-locked.svg | 3 + assets/icons/cloud-offline.svg | 3 + assets/icons/cloud-software.svg | 3 + assets/icons/cloud-upload.svg | 3 + assets/icons/cloud.svg | 3 + assets/icons/cluster.svg | 3 + assets/icons/coat-check.svg | 3 + assets/icons/code.svg | 3 + assets/icons/coffee.svg | 3 + assets/icons/columns.svg | 3 + assets/icons/command.svg | 3 + assets/icons/compare.svg | 4 + assets/icons/compass.svg | 3 + assets/icons/compliance.svg | 4 + assets/icons/configure.svg | 4 + assets/icons/connect.svg | 3 + assets/icons/connectivity.svg | 3 + assets/icons/console.svg | 5 + assets/icons/contact.svg | 8 + assets/icons/contract.svg | 4 + assets/icons/copy.svg | 5 + assets/icons/cpu.svg | 3 + assets/icons/credit-card.svg | 3 + assets/icons/cube.svg | 3 + assets/icons/cubes.svg | 3 + assets/icons/currency.svg | 3 + assets/icons/cursor.svg | 3 + assets/icons/cut.svg | 3 + assets/icons/cycle.svg | 3 + assets/icons/dashboard.svg | 3 + assets/icons/database.svg | 3 + assets/icons/deliver.svg | 6 + assets/icons/deploy.svg | 4 + assets/icons/descend.svg | 7 + assets/icons/descending.svg | 3 + assets/icons/desktop.svg | 3 + assets/icons/detach.svg | 5 + assets/icons/device.svg | 4 + assets/icons/dial.svg | 10 + assets/icons/diamond.svg | 3 + assets/icons/directions.svg | 3 + assets/icons/disc.svg | 4 + assets/icons/dislike-fill.svg | 4 + assets/icons/dislike.svg | 4 + assets/icons/document-cloud.svg | 4 + assets/icons/document-config.svg | 4 + assets/icons/document-csv.svg | 6 + assets/icons/document-download.svg | 4 + assets/icons/document-excel.svg | 4 + assets/icons/document-image.svg | 5 + assets/icons/document-locked.svg | 5 + assets/icons/document-missing.svg | 4 + assets/icons/document-notes.svg | 4 + assets/icons/document-outlook.svg | 4 + assets/icons/document-pdf.svg | 6 + assets/icons/document-performance.svg | 4 + assets/icons/document-ppt.svg | 4 + assets/icons/document-rtf.svg | 6 + assets/icons/document-sound.svg | 6 + assets/icons/document-store.svg | 4 + assets/icons/document-test.svg | 4 + assets/icons/document-text.svg | 6 + assets/icons/document-threat.svg | 4 + assets/icons/document-time.svg | 5 + assets/icons/document-transfer.svg | 4 + assets/icons/document-txt.svg | 6 + assets/icons/document-update.svg | 5 + assets/icons/document-upload.svg | 3 + assets/icons/document-user.svg | 4 + assets/icons/document-verified.svg | 4 + assets/icons/document-video.svg | 4 + assets/icons/document-warning.svg | 4 + assets/icons/document-windows.svg | 5 + assets/icons/document-word.svg | 4 + assets/icons/document-zip.svg | 6 + assets/icons/document.svg | 3 + assets/icons/domain.svg | 3 + assets/icons/down.svg | 3 + assets/icons/download.svg | 4 + assets/icons/drag.svg | 8 + assets/icons/drive-cage.svg | 3 + assets/icons/duplicate.svg | 4 + assets/icons/edit.svg | 4 + assets/icons/eject.svg | 4 + assets/icons/element.svg | 3 + assets/icons/elevator.svg | 3 + assets/icons/emergency-fill.svg | 3 + assets/icons/emergency.svg | 3 + assets/icons/erase.svg | 4 + assets/icons/escalator.svg | 3 + assets/icons/expand.svg | 4 + assets/icons/fan.svg | 3 + assets/icons/fast-forward.svg | 3 + assets/icons/favorite.svg | 3 + assets/icons/filter.svg | 3 + assets/icons/finger-print.svg | 3 + assets/icons/firewall.svg | 3 + assets/icons/five-g.svg | 3 + assets/icons/flag.svg | 3 + assets/icons/flows.svg | 4 + assets/icons/focus.svg | 7 + assets/icons/folder-add.svg | 4 + assets/icons/folder-cycle.svg | 5 + assets/icons/folder-open.svg | 3 + assets/icons/folder-search.svg | 4 + assets/icons/folder.svg | 3 + assets/icons/forward-ten.svg | 5 + assets/icons/gallery.svg | 4 + assets/icons/gamepad.svg | 3 + assets/icons/gateway.svg | 3 + assets/icons/gem.svg | 3 + assets/icons/gift.svg | 3 + assets/icons/globe.svg | 3 + assets/icons/gpu.svg | 3 + assets/icons/grid.svg | 3 + assets/icons/group.svg | 3 + assets/icons/grow.svg | 3 + assets/icons/halt.svg | 3 + assets/icons/help-book.svg | 5 + assets/icons/help.svg | 5 + assets/icons/hide.svg | 5 + assets/icons/history.svg | 4 + assets/icons/home.svg | 3 + assets/icons/host-maintenance.svg | 3 + assets/icons/host.svg | 3 + assets/icons/ice-cream.svg | 3 + assets/icons/image.svg | 4 + assets/icons/impact.svg | 3 + assets/icons/in-progress.svg | 4 + assets/icons/inbox.svg | 3 + assets/icons/info.svg | 5 + assets/icons/inherit.svg | 3 + assets/icons/insecure.svg | 4 + assets/icons/inspect.svg | 3 + assets/icons/install.svg | 3 + assets/icons/integration.svg | 3 + assets/icons/iteration.svg | 5 + assets/icons/key.svg | 4 + assets/icons/keyboard.svg | 3 + assets/icons/language.svg | 3 + assets/icons/layer.svg | 3 + assets/icons/left.svg | 3 + assets/icons/like-fill.svg | 4 + assets/icons/like.svg | 4 + assets/icons/link-bottom.svg | 4 + assets/icons/link-next.svg | 3 + assets/icons/link-prev.svg | 3 + assets/icons/link-top.svg | 4 + assets/icons/link.svg | 5 + assets/icons/list-ordered.svg | 8 + assets/icons/list-unordered.svg | 8 + assets/icons/list.svg | 10 + assets/icons/local.svg | 3 + assets/icons/location-pin.svg | 3 + assets/icons/location.svg | 3 + assets/icons/lock.svg | 4 + assets/icons/lodging.svg | 3 + assets/icons/login.svg | 4 + assets/icons/logout.svg | 4 + assets/icons/lounge.svg | 3 + assets/icons/magic.svg | 8 + assets/icons/mail.svg | 3 + assets/icons/manual.svg | 3 + assets/icons/map-add.svg | 3 + assets/icons/map.svg | 3 + assets/icons/meeting.svg | 3 + assets/icons/memory.svg | 3 + assets/icons/menu.svg | 5 + assets/icons/microphone.svg | 3 + assets/icons/mode.svg | 4 + assets/icons/money.svg | 3 + assets/icons/monitor.svg | 3 + assets/icons/moon.svg | 3 + assets/icons/more-vertical.svg | 5 + assets/icons/more.svg | 5 + assets/icons/mouse.svg | 3 + assets/icons/multimedia.svg | 4 + assets/icons/multiple.svg | 3 + assets/icons/music.svg | 3 + assets/icons/navigate.svg | 3 + assets/icons/network-drive.svg | 3 + assets/icons/network-switch.svg | 3 + assets/icons/network.svg | 3 + assets/icons/new-window.svg | 4 + assets/icons/new.svg | 3 + assets/icons/nodes.svg | 3 + assets/icons/note.svg | 3 + assets/icons/notes.svg | 6 + assets/icons/notification.svg | 3 + assets/icons/object-group.svg | 5 + assets/icons/object-ungroup.svg | 3 + assets/icons/offline-storage.svg | 3 + assets/icons/optimize.svg | 6 + assets/icons/organization.svg | 3 + assets/icons/overview.svg | 3 + assets/icons/package.svg | 3 + assets/icons/paint.svg | 3 + assets/icons/pan.svg | 3 + assets/icons/pause-fill.svg | 4 + assets/icons/pause.svg | 4 + assets/icons/performance.svg | 5 + assets/icons/personal-computer.svg | 3 + assets/icons/phone-flip.svg | 3 + assets/icons/phone-horizontal.svg | 3 + assets/icons/phone-vertical.svg | 3 + assets/icons/phone.svg | 3 + assets/icons/pin.svg | 3 + assets/icons/play-fill.svg | 3 + assets/icons/play.svg | 3 + assets/icons/power-cycle.svg | 5 + assets/icons/power-force-shutdown.svg | 4 + assets/icons/power-reset.svg | 4 + assets/icons/power.svg | 4 + assets/icons/print.svg | 4 + assets/icons/progress.svg | 5 + assets/icons/projects.svg | 4 + assets/icons/qr.svg | 3 + assets/icons/redo.svg | 3 + assets/icons/refresh.svg | 3 + assets/icons/resources.svg | 3 + assets/icons/restaurant.svg | 3 + assets/icons/restroom-men.svg | 3 + assets/icons/restroom-unisex.svg | 3 + assets/icons/restroom-women.svg | 3 + assets/icons/restroom.svg | 3 + assets/icons/resume.svg | 4 + assets/icons/return.svg | 3 + assets/icons/revert.svg | 3 + assets/icons/rewind.svg | 3 + assets/icons/right.svg | 3 + assets/icons/risk.svg | 3 + assets/icons/robot.svg | 6 + assets/icons/rotate-left.svg | 3 + assets/icons/rotate-right.svg | 3 + assets/icons/rss.svg | 3 + assets/icons/run.svg | 3 + assets/icons/sans.svg | 3 + assets/icons/satellite.svg | 3 + assets/icons/save.svg | 3 + assets/icons/scan.svg | 3 + assets/icons/scorecard.svg | 8 + assets/icons/script.svg | 3 + assets/icons/sd.svg | 3 + assets/icons/search-advanced.svg | 4 + assets/icons/search.svg | 3 + assets/icons/secure.svg | 4 + assets/icons/select.svg | 4 + assets/icons/selection.svg | 10 + assets/icons/semantics.svg | 3 + assets/icons/send.svg | 3 + assets/icons/sensor-locked.svg | 3 + assets/icons/sensor-off.svg | 3 + assets/icons/sensor.svg | 3 + assets/icons/server-cluster.svg | 3 + assets/icons/server.svg | 3 + assets/icons/servers.svg | 3 + assets/icons/service-play.svg | 3 + assets/icons/services.svg | 3 + assets/icons/settings.svg | 4 + assets/icons/share.svg | 3 + assets/icons/shield-check.svg | 3 + assets/icons/shield-emergency.svg | 3 + assets/icons/shield-security.svg | 3 + assets/icons/shield-unsecure.svg | 3 + assets/icons/shield.svg | 3 + assets/icons/shift.svg | 3 + assets/icons/shop.svg | 3 + assets/icons/sidebar.svg | 3 + assets/icons/sign.svg | 3 + assets/icons/spa.svg | 3 + assets/icons/split.svg | 3 + assets/icons/splits.svg | 3 + assets/icons/stakeholder.svg | 4 + assets/icons/star-fill.svg | 3 + assets/icons/star-half-fill.svg | 4 + assets/icons/star-half.svg | 3 + assets/icons/star.svg | 3 + assets/icons/status-critical.svg | 3 + assets/icons/status-disabled.svg | 3 + assets/icons/status-good.svg | 3 + assets/icons/status-info.svg | 3 + assets/icons/status-unknown.svg | 3 + assets/icons/status-warning.svg | 3 + assets/icons/steps.svg | 3 + assets/icons/stop-fill.svg | 3 + assets/icons/stop.svg | 3 + assets/icons/storage.svg | 3 + assets/icons/street-view.svg | 3 + assets/icons/subtract.svg | 3 + assets/icons/sun.svg | 11 + assets/icons/support.svg | 3 + assets/icons/swim.svg | 3 + assets/icons/switch.svg | 3 + assets/icons/sync.svg | 4 + assets/icons/system.svg | 3 + assets/icons/table-add-column.svg | 4 + assets/icons/table-add.svg | 4 + assets/icons/table-search.svg | 4 + assets/icons/table.svg | 3 + assets/icons/tag.svg | 6 + assets/icons/tape.svg | 5 + assets/icons/target.svg | 5 + assets/icons/task.svg | 8 + assets/icons/technology.svg | 3 + assets/icons/temperature.svg | 7 + assets/icons/template.svg | 3 + assets/icons/test-desktop.svg | 4 + assets/icons/test.svg | 5 + assets/icons/text-wrap.svg | 9 + assets/icons/theme.svg | 3 + assets/icons/threats.svg | 3 + assets/icons/three-d-effects.svg | 3 + assets/icons/three-d.svg | 4 + assets/icons/ticket.svg | 4 + assets/icons/time.svg | 3 + assets/icons/tools.svg | 4 + assets/icons/tooltip.svg | 5 + assets/icons/train.svg | 3 + assets/icons/transaction.svg | 4 + assets/icons/trash.svg | 5 + assets/icons/tree-node.svg | 3 + assets/icons/tree.svg | 3 + assets/icons/trigger.svg | 3 + assets/icons/trophy.svg | 3 + assets/icons/tty.svg | 9 + assets/icons/undo.svg | 3 + assets/icons/unlink.svg | 10 + assets/icons/unlock.svg | 4 + assets/icons/unsorted.svg | 4 + assets/icons/up.svg | 3 + assets/icons/update.svg | 4 + assets/icons/upgrade.svg | 4 + assets/icons/upload.svg | 4 + assets/icons/usb-key.svg | 3 + assets/icons/user-add.svg | 4 + assets/icons/user-admin.svg | 4 + assets/icons/user-expert.svg | 4 + assets/icons/user-female.svg | 3 + assets/icons/user-manager.svg | 3 + assets/icons/user-new.svg | 4 + assets/icons/user-police.svg | 4 + assets/icons/user-settings.svg | 4 + assets/icons/user-worker.svg | 3 + assets/icons/user.svg | 3 + assets/icons/validate.svg | 4 + assets/icons/vend.svg | 3 + assets/icons/video.svg | 3 + assets/icons/view.svg | 9 + assets/icons/virtual-machine.svg | 3 + assets/icons/virtual-storage.svg | 3 + assets/icons/vm-maintenance.svg | 3 + assets/icons/volume-low.svg | 4 + assets/icons/volume-mute.svg | 4 + assets/icons/volume.svg | 5 + assets/icons/vulnerability.svg | 3 + assets/icons/waypoint.svg | 3 + assets/icons/webcam.svg | 3 + assets/icons/wheelchair-active.svg | 5 + assets/icons/wheelchair.svg | 3 + assets/icons/wifi-locked.svg | 3 + assets/icons/wifi-low.svg | 8 + assets/icons/wifi-medium.svg | 6 + assets/icons/wifi-none.svg | 8 + assets/icons/wifi-off.svg | 3 + assets/icons/wifi.svg | 3 + assets/icons/workshop.svg | 4 + assets/icons/yoga.svg | 3 + assets/icons/zoom-in.svg | 4 + assets/icons/zoom-out.svg | 4 + assets/site-images/404-pile-invert.svg | 34 ++ assets/site-images/404-pile.svg | 34 ++ .../site-images/HPE_logo_full-clr_pos_rgb.svg | 1 + .../site-images/HPE_logo_full-clr_rev_rgb.svg | 1 + assets/site-images/Kenny.png | Bin 0 -> 19977 bytes assets/site-images/Matt.png | Bin 0 -> 21464 bytes assets/site-images/Shape.svg | 3 + assets/site-images/Taylor.png | Bin 0 -> 18445 bytes assets/site-images/Vicky.png | Bin 0 -> 20480 bytes assets/site-images/accordion-light.svg | 13 + assets/site-images/acme.svg | 3 + assets/site-images/apache-spark.svg | 9 + assets/site-images/apache.svg | 1 + assets/site-images/border-sizing.png | Bin 0 -> 9861 bytes assets/site-images/box-sizing.png | Bin 0 -> 25212 bytes assets/site-images/cards-dark.svg | 141 ++++++ .../site-images/cards-dashboard-example.png | Bin 0 -> 182499 bytes .../site-images/cards-navigation-example.png | Bin 0 -> 72281 bytes assets/site-images/cards.svg | 149 +++++++ .../component-preview-accordion-invert.svg | 26 ++ .../component-preview-accordion.svg | 26 ++ .../componentImages/PageBackground.svg | 15 + .../component-preview-page-invert.svg | 17 + .../component-preview-page.svg | 17 + .../component-preview-pageheader-invert.svg | 14 + .../component-preview-pageheader.svg | 14 + .../component-preview-pagination-invert.svg | 12 + .../component-preview-pagination.svg | 12 + .../component-preview-table-invert.svg | 28 ++ .../component-preview-table.svg | 28 ++ .../components-preview-fileinput-invert.svg | 6 + .../components-preview-fileinput.svg | 6 + .../components-preview-spinner-invert.svg | 4 + .../components-preview-spinner.svg | 4 + .../components-preview-tooltip-invert.svg | 26 ++ .../components-preview-tooltip.svg | 26 ++ .../creativetoolkitimages/components.svg | 146 ++++++ .../creativetoolkitimages/foundation.svg | 74 ++++ .../creativetoolkitimages/templates.svg | 35 ++ assets/site-images/ctera.svg | 1 + assets/site-images/edge-sizing.png | Bin 0 -> 10729 bytes assets/site-images/extend-dark.svg | 68 +++ assets/site-images/extend-light.svg | 68 +++ .../extendImages/extend-preview-chomp.svg | 14 + ...xtend-preview-designer-guidance-invert.svg | 3 + .../extend-preview-designer-guidance.svg | 3 + .../extendImages/extend-preview-designer.svg | 6 + ...tend-preview-developer-guidance-invert.svg | 5 + .../extend-preview-developer-guidance.svg | 5 + .../extend-preview-grommet-invert.svg | 20 + .../extendImages/extend-preview-grommet.svg | 20 + .../extend-preview-hpe-docs-invert.svg | 4 + .../extendImages/extend-preview-hpe-docs.svg | 4 + .../extend-preview-hpe-images.png | Bin 0 -> 141534 bytes .../extend-preview-roadmap-invert.svg | 12 + .../extendImages/extend-preview-roadmap.svg | 12 + .../extend-preview-router-invert.svg | 12 + .../extendImages/extend-preview-router.svg | 12 + .../extend-preview-sidebar-invert.svg | 23 + .../extendImages/extend-preview-sidebar.svg | 23 + .../extend-preview-slides-audience-invert.svg | 8 + .../extend-preview-slides-audience.svg | 8 + .../extend-preview-table-invert.svg | 157 +++++++ .../extendImages/extend-preview-table.svg | 157 +++++++ assets/site-images/fileinput-form-preview.png | Bin 0 -> 201540 bytes .../site-images/form-example-nonrequired.png | Bin 0 -> 116386 bytes .../Operable-visual-element-invert.svg | 50 +++ .../Operable-visual-element.svg | 50 +++ .../Perceivable-visual-element-invert.svg | 18 + .../Perceivable-visual-element.svg | 18 + .../Robust-visual-element-invert.svg | 15 + .../Robust-visual-element.svg | 15 + .../Understandable-visual-element-invert.svg | 8 + .../Understandable-visual-element.svg | 8 + ...oundation-preview-accessibility-invert.svg | 4 + .../foundation-preview-accessibility.svg | 4 + .../foundation-preview-brand-invert.svg | 11 + .../foundation-preview-brand.svg | 11 + .../foundation-preview-carte-invert.svg | 66 +++ .../foundation-preview-carte.svg | 66 +++ .../foundation-preview-colors-invert.svg | 5 + .../foundation-preview-colors.svg | 5 + ...ndation-preview-componentsizing-invert.svg | 8 + .../foundation-preview-componentsizing.svg | 8 + ...ndation-preview-containersizing-invert.svg | 9 + .../foundation-preview-containersizing.svg | 9 + .../foundation-preview-content-invert.svg | 3 + .../foundation-preview-content.svg | 3 + .../foundation-preview-human-invert.svg | 3 + .../foundation-preview-human.svg | 3 + .../foundation-preview-icons-invert.svg | 19 + .../foundation-preview-icons.svg | 19 + .../foundation-preview-philosophy-invert.svg | 6 + .../foundation-preview-philosophy.svg | 6 + .../foundation-preview-principles-invert.svg | 4 + .../foundation-preview-principles.svg | 4 + .../foundation-preview-scalesystem-invert.svg | 5 + .../foundation-preview-scalesystem.svg | 5 + .../foundation-preview-spacing-invert.svg | 8 + .../foundation-preview-spacing.svg | 8 + ...oundation-preview-tshirt-sizing-invert.svg | 7 + .../foundation-preview-tshirt-sizing.svg | 7 + .../foundation-preview-type-invert.svg | 3 + .../foundation-preview-type.svg | 3 + ...undation-preview-voice-and-tone-invert.svg | 3 + .../foundation-preview-voice-and-tone.svg | 3 + assets/site-images/google.svg | 13 + assets/site-images/grid-light.svg | 3 + .../highlightImages/1col-wizard-invert.svg | 7 + .../highlightImages/1col-wizard.svg | 7 + .../highlightImages/accessibility-dark.svg | 5 + .../highlightImages/accessibility.svg | 11 + .../highlightImages/color-dark.svg | 9 + assets/site-images/highlightImages/color.svg | 6 + .../highlightImages/forms-dark.svg | 34 ++ assets/site-images/highlightImages/forms.svg | 24 + .../site-images/highlightImages/grid-dark.svg | 3 + assets/site-images/highlightImages/grid.svg | 3 + .../highlightImages/header-dark.svg | 27 ++ assets/site-images/highlightImages/header.svg | 18 + .../highlightImages/icons-dark.svg | 18 + assets/site-images/highlightImages/icons.svg | 19 + .../highlightImages/page-layouts-dark.svg | 23 + .../highlightImages/page-layouts.svg | 23 + .../highlightImages/table-dark.svg | 51 +++ assets/site-images/highlightImages/table.svg | 31 ++ .../highlightImages/typography-dark.svg | 4 + .../highlightImages/typography.svg | 10 + assets/site-images/home-dark.svg | 27 ++ assets/site-images/home.svg | 27 ++ assets/site-images/hpe-design-tokens-v0.png | Bin 0 -> 659208 bytes assets/site-images/hpe-design-tokens-v1.png | Bin 0 -> 675077 bytes assets/site-images/images/Abstract.jpg | Bin 0 -> 377432 bytes .../images/abstract-burst-colored-powder.jpg | Bin 0 -> 230541 bytes .../images/abstract-color-clouds.jpg | Bin 0 -> 222830 bytes assets/site-images/images/main-bg-dark.jpg | Bin 0 -> 760404 bytes assets/site-images/images/main-bg.jpg | Bin 0 -> 183082 bytes assets/site-images/images/world_map.jpg | Bin 0 -> 316940 bytes .../box-model-alignself.png | Bin 0 -> 491101 bytes .../box-model-part-one/box-model-final.png | Bin 0 -> 498336 bytes .../box-model-part-one/box-model-row.png | Bin 0 -> 743457 bytes .../learnImages/box-model-part-one/step-1.png | Bin 0 -> 1222598 bytes .../learnImages/box-model-part-one/step-2.png | Bin 0 -> 560733 bytes .../learnImages/box-model-part-one/step-3.png | Bin 0 -> 531774 bytes .../learnImages/data-simple-filters.png | Bin 0 -> 193032 bytes .../learnImages/data-simple-toolbar.png | Bin 0 -> 114911 bytes .../alan-hardman-SU1LFoeEUkk-unsplash.jpg | Bin 0 -> 2594834 bytes .../david-clode-EDfZ0Sjmp_w-unsplash.jpg | Bin 0 -> 4644183 bytes .../denny-muller-s9zGsWDiFO4-unsplash.jpg | Bin 0 -> 717052 bytes ...ella-clare-marino-EGXpSrG02sU-unsplash.jpg | Bin 0 -> 2586398 bytes .../lakeisha-bennett-znBJkXzo8ik-unsplash.jpg | Bin 0 -> 643672 bytes .../unsplash-wooden-chair.avif | Bin 0 -> 180145 bytes .../wolf-schram-19t6J2RVqQE-unsplash.jpg | Bin 0 -> 5139615 bytes assets/site-images/logos/apache.svg | 17 + assets/site-images/logos/dataiku.svg | 15 + assets/site-images/logos/determined-ai.svg | 13 + assets/site-images/logos/dremio.svg | 11 + assets/site-images/logos/flywheel.svg | 10 + assets/site-images/logos/h2o.svg | 9 + assets/site-images/logos/joulica.svg | 15 + .../site-images/logos/networking-services.svg | 11 + assets/site-images/logos/singlestore.svg | 17 + assets/site-images/logos/streamsets.svg | 9 + assets/site-images/man-wfh.jpeg | Bin 0 -> 66621 bytes assets/site-images/oracle.svg | 3 + .../site-images/pagination-list-preview.png | Bin 0 -> 73184 bytes .../site-images/pagination-table-preview.png | Bin 0 -> 248484 bytes .../required&optional-Fields-example.png | Bin 0 -> 125233 bytes assets/site-images/single-store.svg | 9 + assets/site-images/singlestore.svg | 1 + assets/site-images/starburst.svg | 1 + .../static/HPE.Design.System.V6.vtt | 68 +++ .../accessibility/Bill.Access.Captions.vtt | 136 ++++++ assets/site-images/static/favicon.ico | Bin 0 -> 1150 bytes .../static/images/Assemble_Data_Set.png | Bin 0 -> 142178 bytes .../static/images/Bill-Access-Cover.png | Bin 0 -> 1132682 bytes .../static/images/Browsing_For_Outliers.png | Bin 0 -> 142776 bytes .../static/images/Searching_Data_Tables.png | Bin 0 -> 28242 bytes .../static/images/Table_Anatomy.svg | 24 + .../static/images/aries-introduction.jp2 | Bin 0 -> 52118 bytes .../site-images/static/images/aruba-logo.svg | 8 + assets/site-images/static/images/cards.png | Bin 0 -> 143359 bytes .../static/images/hpe-logo-invert.svg | 11 + assets/site-images/static/images/hpe-logo.svg | 11 + .../static/images/quote-lines-dark.svg | 9 + .../site-images/static/images/quote-lines.svg | 9 + assets/site-images/static/images/quote.svg | 1 + .../static/images/t_harms_bio_image.png | Bin 0 -> 95199 bytes .../static/images/video-placeholder-dark.png | Bin 0 -> 35060 bytes .../static/images/video-placeholder.png | Bin 0 -> 99678 bytes .../table-manage-orders-example.png | Bin 0 -> 379626 bytes .../templateImages/2col-dashboard-invert.svg | 5 + .../templateImages/2col-dashboard.svg | 5 + .../templateImages/3col-dashboard-invert.svg | 8 + .../templateImages/3col-dashboard.svg | 8 + .../templateImages/DrillDown-invert.svg | 7 + .../site-images/templateImages/DrillDown.svg | 7 + .../MatrixNavigation-invert.svg | 9 + .../templateImages/MatrixNavigation.svg | 9 + .../templateImages/Side-to-Side-invert.svg | 7 + .../templateImages/Side-to-Side.svg | 7 + .../templateImages/SideToSide-invert.svg | 7 + .../ascending-button-preview-invert.svg | 22 + .../ascending-button-preview.svg | 22 + .../ascending-nav-left-invert.png | Bin 0 -> 86699 bytes .../templateImages/ascending-nav-left.png | Bin 0 -> 79610 bytes .../ascending-nav-right-invert.png | Bin 0 -> 92280 bytes .../templateImages/ascending-nav-right.png | Bin 0 -> 81786 bytes .../ascending-navigation-invert.svg | 10 + .../templateImages/ascending-navigation.svg | 10 + .../templateImages/coming-soon-invert.svg | 4 + .../templateImages/coming-soon.svg | 4 + .../drill-down-card-example-invert.svg | 74 ++++ .../drill-down-card-example.svg | 74 ++++ .../drill-down-datatable-example-invert.svg | 75 ++++ .../drill-down-datatable-example.svg | 75 ++++ .../drill-down-list-example-invert.svg | 74 ++++ .../drill-down-list-example.svg | 74 ++++ .../globalheader-footer-small.png | Bin 0 -> 4938 bytes .../templateImages/globalheader-footer.png | Bin 0 -> 4440 bytes .../templateImages/globalheader-full.png | Bin 0 -> 5226 bytes .../templateImages/globalheader-full.svg | 11 + .../templateImages/globalheader-greenlake.png | Bin 0 -> 1044 bytes .../templateImages/globalheader-hpe.png | Bin 0 -> 1690 bytes .../templateImages/globalheader-nav.png | Bin 0 -> 1281 bytes .../templateImages/globalheader-sign-in.png | Bin 0 -> 569 bytes .../templateImages/globalheader-small.png | Bin 0 -> 2537 bytes .../templateImages/globalheader.png | Bin 0 -> 3830 bytes .../matrix-app-example-invert.svg | 79 ++++ .../templateImages/matrix-app-example.svg | 79 ++++ .../templateImages/matrix-music-invert.svg | 63 +++ .../templateImages/matrix-music.svg | 63 +++ .../multicol-dashboard-invert.svg | 11 + .../templateImages/multicol-dashboard.svg | 11 + .../templateImages/tab-nav-invert.svg | 27 ++ assets/site-images/templateImages/tab-nav.svg | 27 ++ ...ate-preview-banner-notification-invert.svg | 14 + .../template-preview-banner-notification.svg | 14 + .../template-preview-cards-invert.svg | 18 + .../templateImages/template-preview-cards.svg | 18 + .../template-preview-child objects-invert.svg | 8 + .../template-preview-child objects.svg | 8 + .../template-preview-dashboard-invert.svg | 9 + .../template-preview-dashboard.svg | 9 + ...late-preview-data-visualization-invert.svg | 49 ++ .../template-preview-data-visualization.svg | 49 ++ .../template-preview-filtering-invert.svg | 6 + .../template-preview-filtering.svg | 6 + .../template-preview-form-invert.svg | 27 ++ .../templateImages/template-preview-form.svg | 27 ++ .../template-preview-global-header-1.svg | 13 + .../template-preview-global-header-invert.svg | 20 + .../template-preview-global-header.svg | 20 + .../template-preview-hubnspoke-invert.svg | 18 + .../template-preview-hubnspoke.svg | 18 + .../template-preview-i18n-invert.svg | 3 + .../templateImages/template-preview-i18n.svg | 3 + .../template-preview-list-invert.svg | 9 + .../templateImages/template-preview-list.svg | 9 + .../template-preview-navigation-invert.svg | 3 + .../template-preview-navigation.svg | 3 + .../template-preview-notifications-invert.svg | 5 + .../template-preview-notifications.svg | 5 + .../template-preview-pagelayout-invert.svg | 12 + .../template-preview-pagelayout.svg | 12 + .../template-preview-persistent-invert.svg | 5 + .../template-preview-persistent.svg | 5 + ...te-preview-scrolling-pagination-invert.svg | 15 + .../template-preview-scrolling-pagination.svg | 15 + ...emplate-preview-table-customize-invert.svg | 28 ++ .../template-preview-table-customize.svg | 28 ++ .../template-preview-wizard-invert.svg | 11 + .../template-preview-wizard.svg | 11 + assets/site-images/typography-light.svg | 4 + assets/site-images/whatis/app.svg | 50 +++ assets/site-images/whatis/base.svg | 5 + assets/site-images/whatis/combining.svg | 6 + assets/site-images/whatis/tailor.svg | 16 + assets/site-images/whatis/tools.svg | 17 + assets/site-images/windows.svg | 6 + assets/site-images/woman-glc.jpeg | Bin 0 -> 65062 bytes assets/site-images/woman-man-server-room.jpeg | Bin 0 -> 83884 bytes 752 files changed, 8423 insertions(+) create mode 100644 01-what-it-is.md create mode 100644 02-brand-foundations.md create mode 100644 03-design-tokens.md create mode 100644 04-voice-and-tone.md create mode 100644 05-accessibility.md create mode 100644 06-components-templates.md create mode 100644 07-adoption-and-compliance.md create mode 100644 HOWTO-mirror-the-design-system.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 assets/README.md create mode 100644 assets/brand/HPE_logo_full-clr_pos_rgb.svg create mode 100644 assets/brand/HPE_logo_full-clr_rev_rgb.svg create mode 100644 assets/brand/aruba-logo.svg create mode 100644 assets/brand/hpe-logo-invert.svg create mode 100644 assets/brand/hpe-logo.svg create mode 100644 assets/icons/AI-gen-fill.svg create mode 100644 assets/icons/AI-gen.svg create mode 100644 assets/icons/AI-systems.svg create mode 100644 assets/icons/COPYRIGHT.md create mode 100644 assets/icons/LICENSE create mode 100644 assets/icons/accessibility.svg create mode 100644 assets/icons/achievement.svg create mode 100644 assets/icons/actions.svg create mode 100644 assets/icons/ad.svg create mode 100644 assets/icons/add.svg create mode 100644 assets/icons/aed.svg create mode 100644 assets/icons/aggregate.svg create mode 100644 assets/icons/aid.svg create mode 100644 assets/icons/alarm.svg create mode 100644 assets/icons/alert.svg create mode 100644 assets/icons/analytics.svg create mode 100644 assets/icons/anchor.svg create mode 100644 assets/icons/announce.svg create mode 100644 assets/icons/app.svg create mode 100644 assets/icons/apps.svg create mode 100644 assets/icons/archive.svg create mode 100644 assets/icons/article.svg create mode 100644 assets/icons/ascend.svg create mode 100644 assets/icons/ascending.svg create mode 100644 assets/icons/assist-listening.svg create mode 100644 assets/icons/atm.svg create mode 100644 assets/icons/attachment.svg create mode 100644 assets/icons/attraction.svg create mode 100644 assets/icons/baby.svg create mode 100644 assets/icons/back-ten.svg create mode 100644 assets/icons/bar.svg create mode 100644 assets/icons/battery-empty.svg create mode 100644 assets/icons/battery-full.svg create mode 100644 assets/icons/battery-low.svg create mode 100644 assets/icons/battery.svg create mode 100644 assets/icons/beacon.svg create mode 100644 assets/icons/bike.svg create mode 100644 assets/icons/blades-horizontal.svg create mode 100644 assets/icons/blades-vertical.svg create mode 100644 assets/icons/blog.svg create mode 100644 assets/icons/bluetooth.svg create mode 100644 assets/icons/book.svg create mode 100644 assets/icons/bookmark.svg create mode 100644 assets/icons/braille.svg create mode 100644 assets/icons/briefcase.svg create mode 100644 assets/icons/brush.svg create mode 100644 assets/icons/bucket.svg create mode 100644 assets/icons/bug.svg create mode 100644 assets/icons/bulb.svg create mode 100644 assets/icons/bundle.svg create mode 100644 assets/icons/bus.svg create mode 100644 assets/icons/business-service.svg create mode 100644 assets/icons/cafeteria.svg create mode 100644 assets/icons/calculator.svg create mode 100644 assets/icons/calendar.svg create mode 100644 assets/icons/camera.svg create mode 100644 assets/icons/car.svg create mode 100644 assets/icons/caret-down.svg create mode 100644 assets/icons/caret-left.svg create mode 100644 assets/icons/caret-right.svg create mode 100644 assets/icons/caret-up.svg create mode 100644 assets/icons/cart.svg create mode 100644 assets/icons/catalog.svg create mode 100644 assets/icons/certificate.svg create mode 100644 assets/icons/channel.svg create mode 100644 assets/icons/chapter-add.svg create mode 100644 assets/icons/chapter-next.svg create mode 100644 assets/icons/chapter-previous.svg create mode 100644 assets/icons/chart-bar.svg create mode 100644 assets/icons/chart-line.svg create mode 100644 assets/icons/chart-pie.svg create mode 100644 assets/icons/chat-conversation.svg create mode 100644 assets/icons/chat.svg create mode 100644 assets/icons/checkmark.svg create mode 100644 assets/icons/circle-empty.svg create mode 100644 assets/icons/circle-fill.svg create mode 100644 assets/icons/clear.svg create mode 100644 assets/icons/clipboard.svg create mode 100644 assets/icons/clock.svg create mode 100644 assets/icons/clone.svg create mode 100644 assets/icons/close.svg create mode 100644 assets/icons/closed-caption.svg create mode 100644 assets/icons/cloud-add.svg create mode 100644 assets/icons/cloud-computer.svg create mode 100644 assets/icons/cloud-download.svg create mode 100644 assets/icons/cloud-locked.svg create mode 100644 assets/icons/cloud-offline.svg create mode 100644 assets/icons/cloud-software.svg create mode 100644 assets/icons/cloud-upload.svg create mode 100644 assets/icons/cloud.svg create mode 100644 assets/icons/cluster.svg create mode 100644 assets/icons/coat-check.svg create mode 100644 assets/icons/code.svg create mode 100644 assets/icons/coffee.svg create mode 100644 assets/icons/columns.svg create mode 100644 assets/icons/command.svg create mode 100644 assets/icons/compare.svg create mode 100644 assets/icons/compass.svg create mode 100644 assets/icons/compliance.svg create mode 100644 assets/icons/configure.svg create mode 100644 assets/icons/connect.svg create mode 100644 assets/icons/connectivity.svg create mode 100644 assets/icons/console.svg create mode 100644 assets/icons/contact.svg create mode 100644 assets/icons/contract.svg create mode 100644 assets/icons/copy.svg create mode 100644 assets/icons/cpu.svg create mode 100644 assets/icons/credit-card.svg create mode 100644 assets/icons/cube.svg create mode 100644 assets/icons/cubes.svg create mode 100644 assets/icons/currency.svg create mode 100644 assets/icons/cursor.svg create mode 100644 assets/icons/cut.svg create mode 100644 assets/icons/cycle.svg create mode 100644 assets/icons/dashboard.svg create mode 100644 assets/icons/database.svg create mode 100644 assets/icons/deliver.svg create mode 100644 assets/icons/deploy.svg create mode 100644 assets/icons/descend.svg create mode 100644 assets/icons/descending.svg create mode 100644 assets/icons/desktop.svg create mode 100644 assets/icons/detach.svg create mode 100644 assets/icons/device.svg create mode 100644 assets/icons/dial.svg create mode 100644 assets/icons/diamond.svg create mode 100644 assets/icons/directions.svg create mode 100644 assets/icons/disc.svg create mode 100644 assets/icons/dislike-fill.svg create mode 100644 assets/icons/dislike.svg create mode 100644 assets/icons/document-cloud.svg create mode 100644 assets/icons/document-config.svg create mode 100644 assets/icons/document-csv.svg create mode 100644 assets/icons/document-download.svg create mode 100644 assets/icons/document-excel.svg create mode 100644 assets/icons/document-image.svg create mode 100644 assets/icons/document-locked.svg create mode 100644 assets/icons/document-missing.svg create mode 100644 assets/icons/document-notes.svg create mode 100644 assets/icons/document-outlook.svg create mode 100644 assets/icons/document-pdf.svg create mode 100644 assets/icons/document-performance.svg create mode 100644 assets/icons/document-ppt.svg create mode 100644 assets/icons/document-rtf.svg create mode 100644 assets/icons/document-sound.svg create mode 100644 assets/icons/document-store.svg create mode 100644 assets/icons/document-test.svg create mode 100644 assets/icons/document-text.svg create mode 100644 assets/icons/document-threat.svg create mode 100644 assets/icons/document-time.svg create mode 100644 assets/icons/document-transfer.svg create mode 100644 assets/icons/document-txt.svg create mode 100644 assets/icons/document-update.svg create mode 100644 assets/icons/document-upload.svg create mode 100644 assets/icons/document-user.svg create mode 100644 assets/icons/document-verified.svg create mode 100644 assets/icons/document-video.svg create mode 100644 assets/icons/document-warning.svg create mode 100644 assets/icons/document-windows.svg create mode 100644 assets/icons/document-word.svg create mode 100644 assets/icons/document-zip.svg create mode 100644 assets/icons/document.svg create mode 100644 assets/icons/domain.svg create mode 100644 assets/icons/down.svg create mode 100644 assets/icons/download.svg create mode 100644 assets/icons/drag.svg create mode 100644 assets/icons/drive-cage.svg create mode 100644 assets/icons/duplicate.svg create mode 100644 assets/icons/edit.svg create mode 100644 assets/icons/eject.svg create mode 100644 assets/icons/element.svg create mode 100644 assets/icons/elevator.svg create mode 100644 assets/icons/emergency-fill.svg create mode 100644 assets/icons/emergency.svg create mode 100644 assets/icons/erase.svg create mode 100644 assets/icons/escalator.svg create mode 100644 assets/icons/expand.svg create mode 100644 assets/icons/fan.svg create mode 100644 assets/icons/fast-forward.svg create mode 100644 assets/icons/favorite.svg create mode 100644 assets/icons/filter.svg create mode 100644 assets/icons/finger-print.svg create mode 100644 assets/icons/firewall.svg create mode 100644 assets/icons/five-g.svg create mode 100644 assets/icons/flag.svg create mode 100644 assets/icons/flows.svg create mode 100644 assets/icons/focus.svg create mode 100644 assets/icons/folder-add.svg create mode 100644 assets/icons/folder-cycle.svg create mode 100644 assets/icons/folder-open.svg create mode 100644 assets/icons/folder-search.svg create mode 100644 assets/icons/folder.svg create mode 100644 assets/icons/forward-ten.svg create mode 100644 assets/icons/gallery.svg create mode 100644 assets/icons/gamepad.svg create mode 100644 assets/icons/gateway.svg create mode 100644 assets/icons/gem.svg create mode 100644 assets/icons/gift.svg create mode 100644 assets/icons/globe.svg create mode 100644 assets/icons/gpu.svg create mode 100644 assets/icons/grid.svg create mode 100644 assets/icons/group.svg create mode 100644 assets/icons/grow.svg create mode 100644 assets/icons/halt.svg create mode 100644 assets/icons/help-book.svg create mode 100644 assets/icons/help.svg create mode 100644 assets/icons/hide.svg create mode 100644 assets/icons/history.svg create mode 100644 assets/icons/home.svg create mode 100644 assets/icons/host-maintenance.svg create mode 100644 assets/icons/host.svg create mode 100644 assets/icons/ice-cream.svg create mode 100644 assets/icons/image.svg create mode 100644 assets/icons/impact.svg create mode 100644 assets/icons/in-progress.svg create mode 100644 assets/icons/inbox.svg create mode 100644 assets/icons/info.svg create mode 100644 assets/icons/inherit.svg create mode 100644 assets/icons/insecure.svg create mode 100644 assets/icons/inspect.svg create mode 100644 assets/icons/install.svg create mode 100644 assets/icons/integration.svg create mode 100644 assets/icons/iteration.svg create mode 100644 assets/icons/key.svg create mode 100644 assets/icons/keyboard.svg create mode 100644 assets/icons/language.svg create mode 100644 assets/icons/layer.svg create mode 100644 assets/icons/left.svg create mode 100644 assets/icons/like-fill.svg create mode 100644 assets/icons/like.svg create mode 100644 assets/icons/link-bottom.svg create mode 100644 assets/icons/link-next.svg create mode 100644 assets/icons/link-prev.svg create mode 100644 assets/icons/link-top.svg create mode 100644 assets/icons/link.svg create mode 100644 assets/icons/list-ordered.svg create mode 100644 assets/icons/list-unordered.svg create mode 100644 assets/icons/list.svg create mode 100644 assets/icons/local.svg create mode 100644 assets/icons/location-pin.svg create mode 100644 assets/icons/location.svg create mode 100644 assets/icons/lock.svg create mode 100644 assets/icons/lodging.svg create mode 100644 assets/icons/login.svg create mode 100644 assets/icons/logout.svg create mode 100644 assets/icons/lounge.svg create mode 100644 assets/icons/magic.svg create mode 100644 assets/icons/mail.svg create mode 100644 assets/icons/manual.svg create mode 100644 assets/icons/map-add.svg create mode 100644 assets/icons/map.svg create mode 100644 assets/icons/meeting.svg create mode 100644 assets/icons/memory.svg create mode 100644 assets/icons/menu.svg create mode 100644 assets/icons/microphone.svg create mode 100644 assets/icons/mode.svg create mode 100644 assets/icons/money.svg create mode 100644 assets/icons/monitor.svg create mode 100644 assets/icons/moon.svg create mode 100644 assets/icons/more-vertical.svg create mode 100644 assets/icons/more.svg create mode 100644 assets/icons/mouse.svg create mode 100644 assets/icons/multimedia.svg create mode 100644 assets/icons/multiple.svg create mode 100644 assets/icons/music.svg create mode 100644 assets/icons/navigate.svg create mode 100644 assets/icons/network-drive.svg create mode 100644 assets/icons/network-switch.svg create mode 100644 assets/icons/network.svg create mode 100644 assets/icons/new-window.svg create mode 100644 assets/icons/new.svg create mode 100644 assets/icons/nodes.svg create mode 100644 assets/icons/note.svg create mode 100644 assets/icons/notes.svg create mode 100644 assets/icons/notification.svg create mode 100644 assets/icons/object-group.svg create mode 100644 assets/icons/object-ungroup.svg create mode 100644 assets/icons/offline-storage.svg create mode 100644 assets/icons/optimize.svg create mode 100644 assets/icons/organization.svg create mode 100644 assets/icons/overview.svg create mode 100644 assets/icons/package.svg create mode 100644 assets/icons/paint.svg create mode 100644 assets/icons/pan.svg create mode 100644 assets/icons/pause-fill.svg create mode 100644 assets/icons/pause.svg create mode 100644 assets/icons/performance.svg create mode 100644 assets/icons/personal-computer.svg create mode 100644 assets/icons/phone-flip.svg create mode 100644 assets/icons/phone-horizontal.svg create mode 100644 assets/icons/phone-vertical.svg create mode 100644 assets/icons/phone.svg create mode 100644 assets/icons/pin.svg create mode 100644 assets/icons/play-fill.svg create mode 100644 assets/icons/play.svg create mode 100644 assets/icons/power-cycle.svg create mode 100644 assets/icons/power-force-shutdown.svg create mode 100644 assets/icons/power-reset.svg create mode 100644 assets/icons/power.svg create mode 100644 assets/icons/print.svg create mode 100644 assets/icons/progress.svg create mode 100644 assets/icons/projects.svg create mode 100644 assets/icons/qr.svg create mode 100644 assets/icons/redo.svg create mode 100644 assets/icons/refresh.svg create mode 100644 assets/icons/resources.svg create mode 100644 assets/icons/restaurant.svg create mode 100644 assets/icons/restroom-men.svg create mode 100644 assets/icons/restroom-unisex.svg create mode 100644 assets/icons/restroom-women.svg create mode 100644 assets/icons/restroom.svg create mode 100644 assets/icons/resume.svg create mode 100644 assets/icons/return.svg create mode 100644 assets/icons/revert.svg create mode 100644 assets/icons/rewind.svg create mode 100644 assets/icons/right.svg create mode 100644 assets/icons/risk.svg create mode 100644 assets/icons/robot.svg create mode 100644 assets/icons/rotate-left.svg create mode 100644 assets/icons/rotate-right.svg create mode 100644 assets/icons/rss.svg create mode 100644 assets/icons/run.svg create mode 100644 assets/icons/sans.svg create mode 100644 assets/icons/satellite.svg create mode 100644 assets/icons/save.svg create mode 100644 assets/icons/scan.svg create mode 100644 assets/icons/scorecard.svg create mode 100644 assets/icons/script.svg create mode 100644 assets/icons/sd.svg create mode 100644 assets/icons/search-advanced.svg create mode 100644 assets/icons/search.svg create mode 100644 assets/icons/secure.svg create mode 100644 assets/icons/select.svg create mode 100644 assets/icons/selection.svg create mode 100644 assets/icons/semantics.svg create mode 100644 assets/icons/send.svg create mode 100644 assets/icons/sensor-locked.svg create mode 100644 assets/icons/sensor-off.svg create mode 100644 assets/icons/sensor.svg create mode 100644 assets/icons/server-cluster.svg create mode 100644 assets/icons/server.svg create mode 100644 assets/icons/servers.svg create mode 100644 assets/icons/service-play.svg create mode 100644 assets/icons/services.svg create mode 100644 assets/icons/settings.svg create mode 100644 assets/icons/share.svg create mode 100644 assets/icons/shield-check.svg create mode 100644 assets/icons/shield-emergency.svg create mode 100644 assets/icons/shield-security.svg create mode 100644 assets/icons/shield-unsecure.svg create mode 100644 assets/icons/shield.svg create mode 100644 assets/icons/shift.svg create mode 100644 assets/icons/shop.svg create mode 100644 assets/icons/sidebar.svg create mode 100644 assets/icons/sign.svg create mode 100644 assets/icons/spa.svg create mode 100644 assets/icons/split.svg create mode 100644 assets/icons/splits.svg create mode 100644 assets/icons/stakeholder.svg create mode 100644 assets/icons/star-fill.svg create mode 100644 assets/icons/star-half-fill.svg create mode 100644 assets/icons/star-half.svg create mode 100644 assets/icons/star.svg create mode 100644 assets/icons/status-critical.svg create mode 100644 assets/icons/status-disabled.svg create mode 100644 assets/icons/status-good.svg create mode 100644 assets/icons/status-info.svg create mode 100644 assets/icons/status-unknown.svg create mode 100644 assets/icons/status-warning.svg create mode 100644 assets/icons/steps.svg create mode 100644 assets/icons/stop-fill.svg create mode 100644 assets/icons/stop.svg create mode 100644 assets/icons/storage.svg create mode 100644 assets/icons/street-view.svg create mode 100644 assets/icons/subtract.svg create mode 100644 assets/icons/sun.svg create mode 100644 assets/icons/support.svg create mode 100644 assets/icons/swim.svg create mode 100644 assets/icons/switch.svg create mode 100644 assets/icons/sync.svg create mode 100644 assets/icons/system.svg create mode 100644 assets/icons/table-add-column.svg create mode 100644 assets/icons/table-add.svg create mode 100644 assets/icons/table-search.svg create mode 100644 assets/icons/table.svg create mode 100644 assets/icons/tag.svg create mode 100644 assets/icons/tape.svg create mode 100644 assets/icons/target.svg create mode 100644 assets/icons/task.svg create mode 100644 assets/icons/technology.svg create mode 100644 assets/icons/temperature.svg create mode 100644 assets/icons/template.svg create mode 100644 assets/icons/test-desktop.svg create mode 100644 assets/icons/test.svg create mode 100644 assets/icons/text-wrap.svg create mode 100644 assets/icons/theme.svg create mode 100644 assets/icons/threats.svg create mode 100644 assets/icons/three-d-effects.svg create mode 100644 assets/icons/three-d.svg create mode 100644 assets/icons/ticket.svg create mode 100644 assets/icons/time.svg create mode 100644 assets/icons/tools.svg create mode 100644 assets/icons/tooltip.svg create mode 100644 assets/icons/train.svg create mode 100644 assets/icons/transaction.svg create mode 100644 assets/icons/trash.svg create mode 100644 assets/icons/tree-node.svg create mode 100644 assets/icons/tree.svg create mode 100644 assets/icons/trigger.svg create mode 100644 assets/icons/trophy.svg create mode 100644 assets/icons/tty.svg create mode 100644 assets/icons/undo.svg create mode 100644 assets/icons/unlink.svg create mode 100644 assets/icons/unlock.svg create mode 100644 assets/icons/unsorted.svg create mode 100644 assets/icons/up.svg create mode 100644 assets/icons/update.svg create mode 100644 assets/icons/upgrade.svg create mode 100644 assets/icons/upload.svg create mode 100644 assets/icons/usb-key.svg create mode 100644 assets/icons/user-add.svg create mode 100644 assets/icons/user-admin.svg create mode 100644 assets/icons/user-expert.svg create mode 100644 assets/icons/user-female.svg create mode 100644 assets/icons/user-manager.svg create mode 100644 assets/icons/user-new.svg create mode 100644 assets/icons/user-police.svg create mode 100644 assets/icons/user-settings.svg create mode 100644 assets/icons/user-worker.svg create mode 100644 assets/icons/user.svg create mode 100644 assets/icons/validate.svg create mode 100644 assets/icons/vend.svg create mode 100644 assets/icons/video.svg create mode 100644 assets/icons/view.svg create mode 100644 assets/icons/virtual-machine.svg create mode 100644 assets/icons/virtual-storage.svg create mode 100644 assets/icons/vm-maintenance.svg create mode 100644 assets/icons/volume-low.svg create mode 100644 assets/icons/volume-mute.svg create mode 100644 assets/icons/volume.svg create mode 100644 assets/icons/vulnerability.svg create mode 100644 assets/icons/waypoint.svg create mode 100644 assets/icons/webcam.svg create mode 100644 assets/icons/wheelchair-active.svg create mode 100644 assets/icons/wheelchair.svg create mode 100644 assets/icons/wifi-locked.svg create mode 100644 assets/icons/wifi-low.svg create mode 100644 assets/icons/wifi-medium.svg create mode 100644 assets/icons/wifi-none.svg create mode 100644 assets/icons/wifi-off.svg create mode 100644 assets/icons/wifi.svg create mode 100644 assets/icons/workshop.svg create mode 100644 assets/icons/yoga.svg create mode 100644 assets/icons/zoom-in.svg create mode 100644 assets/icons/zoom-out.svg create mode 100644 assets/site-images/404-pile-invert.svg create mode 100644 assets/site-images/404-pile.svg create mode 100644 assets/site-images/HPE_logo_full-clr_pos_rgb.svg create mode 100644 assets/site-images/HPE_logo_full-clr_rev_rgb.svg create mode 100644 assets/site-images/Kenny.png create mode 100644 assets/site-images/Matt.png create mode 100644 assets/site-images/Shape.svg create mode 100644 assets/site-images/Taylor.png create mode 100644 assets/site-images/Vicky.png create mode 100644 assets/site-images/accordion-light.svg create mode 100644 assets/site-images/acme.svg create mode 100644 assets/site-images/apache-spark.svg create mode 100644 assets/site-images/apache.svg create mode 100644 assets/site-images/border-sizing.png create mode 100644 assets/site-images/box-sizing.png create mode 100644 assets/site-images/cards-dark.svg create mode 100644 assets/site-images/cards-dashboard-example.png create mode 100644 assets/site-images/cards-navigation-example.png create mode 100644 assets/site-images/cards.svg create mode 100644 assets/site-images/component-preview-accordion-invert.svg create mode 100644 assets/site-images/component-preview-accordion.svg create mode 100644 assets/site-images/componentImages/PageBackground.svg create mode 100644 assets/site-images/componentImages/component-preview-page-invert.svg create mode 100644 assets/site-images/componentImages/component-preview-page.svg create mode 100644 assets/site-images/componentImages/component-preview-pageheader-invert.svg create mode 100644 assets/site-images/componentImages/component-preview-pageheader.svg create mode 100644 assets/site-images/componentImages/component-preview-pagination-invert.svg create mode 100644 assets/site-images/componentImages/component-preview-pagination.svg create mode 100644 assets/site-images/componentImages/component-preview-table-invert.svg create mode 100644 assets/site-images/componentImages/component-preview-table.svg create mode 100644 assets/site-images/componentImages/components-preview-fileinput-invert.svg create mode 100644 assets/site-images/componentImages/components-preview-fileinput.svg create mode 100644 assets/site-images/components-preview-spinner-invert.svg create mode 100644 assets/site-images/components-preview-spinner.svg create mode 100644 assets/site-images/components-preview-tooltip-invert.svg create mode 100644 assets/site-images/components-preview-tooltip.svg create mode 100644 assets/site-images/creativetoolkitimages/components.svg create mode 100644 assets/site-images/creativetoolkitimages/foundation.svg create mode 100644 assets/site-images/creativetoolkitimages/templates.svg create mode 100644 assets/site-images/ctera.svg create mode 100644 assets/site-images/edge-sizing.png create mode 100644 assets/site-images/extend-dark.svg create mode 100644 assets/site-images/extend-light.svg create mode 100644 assets/site-images/extendImages/extend-preview-chomp.svg create mode 100644 assets/site-images/extendImages/extend-preview-designer-guidance-invert.svg create mode 100644 assets/site-images/extendImages/extend-preview-designer-guidance.svg create mode 100644 assets/site-images/extendImages/extend-preview-designer.svg create mode 100644 assets/site-images/extendImages/extend-preview-developer-guidance-invert.svg create mode 100644 assets/site-images/extendImages/extend-preview-developer-guidance.svg create mode 100644 assets/site-images/extendImages/extend-preview-grommet-invert.svg create mode 100644 assets/site-images/extendImages/extend-preview-grommet.svg create mode 100644 assets/site-images/extendImages/extend-preview-hpe-docs-invert.svg create mode 100644 assets/site-images/extendImages/extend-preview-hpe-docs.svg create mode 100644 assets/site-images/extendImages/extend-preview-hpe-images.png create mode 100644 assets/site-images/extendImages/extend-preview-roadmap-invert.svg create mode 100644 assets/site-images/extendImages/extend-preview-roadmap.svg create mode 100644 assets/site-images/extendImages/extend-preview-router-invert.svg create mode 100644 assets/site-images/extendImages/extend-preview-router.svg create mode 100644 assets/site-images/extendImages/extend-preview-sidebar-invert.svg create mode 100644 assets/site-images/extendImages/extend-preview-sidebar.svg create mode 100644 assets/site-images/extendImages/extend-preview-slides-audience-invert.svg create mode 100644 assets/site-images/extendImages/extend-preview-slides-audience.svg create mode 100644 assets/site-images/extendImages/extend-preview-table-invert.svg create mode 100644 assets/site-images/extendImages/extend-preview-table.svg create mode 100644 assets/site-images/fileinput-form-preview.png create mode 100644 assets/site-images/form-example-nonrequired.png create mode 100644 assets/site-images/foundationImages/accessibilityImages/Operable-visual-element-invert.svg create mode 100644 assets/site-images/foundationImages/accessibilityImages/Operable-visual-element.svg create mode 100644 assets/site-images/foundationImages/accessibilityImages/Perceivable-visual-element-invert.svg create mode 100644 assets/site-images/foundationImages/accessibilityImages/Perceivable-visual-element.svg create mode 100644 assets/site-images/foundationImages/accessibilityImages/Robust-visual-element-invert.svg create mode 100644 assets/site-images/foundationImages/accessibilityImages/Robust-visual-element.svg create mode 100644 assets/site-images/foundationImages/accessibilityImages/Understandable-visual-element-invert.svg create mode 100644 assets/site-images/foundationImages/accessibilityImages/Understandable-visual-element.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-accessibility-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-accessibility.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-brand-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-brand.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-carte-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-carte.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-colors-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-colors.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-componentsizing-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-componentsizing.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-containersizing-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-containersizing.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-content-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-content.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-human-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-human.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-icons-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-icons.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-philosophy-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-philosophy.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-principles-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-principles.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-scalesystem-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-scalesystem.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-spacing-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-spacing.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-tshirt-sizing-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-tshirt-sizing.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-type-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-type.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-voice-and-tone-invert.svg create mode 100644 assets/site-images/foundationImages/foundation-preview-voice-and-tone.svg create mode 100644 assets/site-images/google.svg create mode 100644 assets/site-images/grid-light.svg create mode 100644 assets/site-images/highlightImages/1col-wizard-invert.svg create mode 100644 assets/site-images/highlightImages/1col-wizard.svg create mode 100644 assets/site-images/highlightImages/accessibility-dark.svg create mode 100644 assets/site-images/highlightImages/accessibility.svg create mode 100644 assets/site-images/highlightImages/color-dark.svg create mode 100644 assets/site-images/highlightImages/color.svg create mode 100644 assets/site-images/highlightImages/forms-dark.svg create mode 100644 assets/site-images/highlightImages/forms.svg create mode 100644 assets/site-images/highlightImages/grid-dark.svg create mode 100644 assets/site-images/highlightImages/grid.svg create mode 100644 assets/site-images/highlightImages/header-dark.svg create mode 100644 assets/site-images/highlightImages/header.svg create mode 100644 assets/site-images/highlightImages/icons-dark.svg create mode 100644 assets/site-images/highlightImages/icons.svg create mode 100644 assets/site-images/highlightImages/page-layouts-dark.svg create mode 100644 assets/site-images/highlightImages/page-layouts.svg create mode 100644 assets/site-images/highlightImages/table-dark.svg create mode 100644 assets/site-images/highlightImages/table.svg create mode 100644 assets/site-images/highlightImages/typography-dark.svg create mode 100644 assets/site-images/highlightImages/typography.svg create mode 100644 assets/site-images/home-dark.svg create mode 100644 assets/site-images/home.svg create mode 100644 assets/site-images/hpe-design-tokens-v0.png create mode 100644 assets/site-images/hpe-design-tokens-v1.png create mode 100644 assets/site-images/images/Abstract.jpg create mode 100644 assets/site-images/images/abstract-burst-colored-powder.jpg create mode 100644 assets/site-images/images/abstract-color-clouds.jpg create mode 100644 assets/site-images/images/main-bg-dark.jpg create mode 100644 assets/site-images/images/main-bg.jpg create mode 100644 assets/site-images/images/world_map.jpg create mode 100644 assets/site-images/learnImages/box-model-part-one/box-model-alignself.png create mode 100644 assets/site-images/learnImages/box-model-part-one/box-model-final.png create mode 100644 assets/site-images/learnImages/box-model-part-one/box-model-row.png create mode 100644 assets/site-images/learnImages/box-model-part-one/step-1.png create mode 100644 assets/site-images/learnImages/box-model-part-one/step-2.png create mode 100644 assets/site-images/learnImages/box-model-part-one/step-3.png create mode 100644 assets/site-images/learnImages/data-simple-filters.png create mode 100644 assets/site-images/learnImages/data-simple-toolbar.png create mode 100644 assets/site-images/learnImages/grid-fundamentals-part-1/alan-hardman-SU1LFoeEUkk-unsplash.jpg create mode 100644 assets/site-images/learnImages/grid-fundamentals-part-1/david-clode-EDfZ0Sjmp_w-unsplash.jpg create mode 100644 assets/site-images/learnImages/grid-fundamentals-part-1/denny-muller-s9zGsWDiFO4-unsplash.jpg create mode 100644 assets/site-images/learnImages/grid-fundamentals-part-1/gabriella-clare-marino-EGXpSrG02sU-unsplash.jpg create mode 100644 assets/site-images/learnImages/grid-fundamentals-part-1/lakeisha-bennett-znBJkXzo8ik-unsplash.jpg create mode 100644 assets/site-images/learnImages/grid-fundamentals-part-1/unsplash-wooden-chair.avif create mode 100644 assets/site-images/learnImages/grid-fundamentals-part-1/wolf-schram-19t6J2RVqQE-unsplash.jpg create mode 100644 assets/site-images/logos/apache.svg create mode 100644 assets/site-images/logos/dataiku.svg create mode 100644 assets/site-images/logos/determined-ai.svg create mode 100644 assets/site-images/logos/dremio.svg create mode 100644 assets/site-images/logos/flywheel.svg create mode 100644 assets/site-images/logos/h2o.svg create mode 100644 assets/site-images/logos/joulica.svg create mode 100644 assets/site-images/logos/networking-services.svg create mode 100644 assets/site-images/logos/singlestore.svg create mode 100644 assets/site-images/logos/streamsets.svg create mode 100644 assets/site-images/man-wfh.jpeg create mode 100644 assets/site-images/oracle.svg create mode 100644 assets/site-images/pagination-list-preview.png create mode 100644 assets/site-images/pagination-table-preview.png create mode 100644 assets/site-images/required&optional-Fields-example.png create mode 100644 assets/site-images/single-store.svg create mode 100644 assets/site-images/singlestore.svg create mode 100644 assets/site-images/starburst.svg create mode 100644 assets/site-images/static/HPE.Design.System.V6.vtt create mode 100644 assets/site-images/static/accessibility/Bill.Access.Captions.vtt create mode 100644 assets/site-images/static/favicon.ico create mode 100644 assets/site-images/static/images/Assemble_Data_Set.png create mode 100644 assets/site-images/static/images/Bill-Access-Cover.png create mode 100644 assets/site-images/static/images/Browsing_For_Outliers.png create mode 100644 assets/site-images/static/images/Searching_Data_Tables.png create mode 100644 assets/site-images/static/images/Table_Anatomy.svg create mode 100644 assets/site-images/static/images/aries-introduction.jp2 create mode 100644 assets/site-images/static/images/aruba-logo.svg create mode 100644 assets/site-images/static/images/cards.png create mode 100644 assets/site-images/static/images/hpe-logo-invert.svg create mode 100644 assets/site-images/static/images/hpe-logo.svg create mode 100644 assets/site-images/static/images/quote-lines-dark.svg create mode 100644 assets/site-images/static/images/quote-lines.svg create mode 100644 assets/site-images/static/images/quote.svg create mode 100644 assets/site-images/static/images/t_harms_bio_image.png create mode 100644 assets/site-images/static/images/video-placeholder-dark.png create mode 100644 assets/site-images/static/images/video-placeholder.png create mode 100644 assets/site-images/table-manage-orders-example.png create mode 100644 assets/site-images/templateImages/2col-dashboard-invert.svg create mode 100644 assets/site-images/templateImages/2col-dashboard.svg create mode 100644 assets/site-images/templateImages/3col-dashboard-invert.svg create mode 100644 assets/site-images/templateImages/3col-dashboard.svg create mode 100644 assets/site-images/templateImages/DrillDown-invert.svg create mode 100644 assets/site-images/templateImages/DrillDown.svg create mode 100644 assets/site-images/templateImages/MatrixNavigation-invert.svg create mode 100644 assets/site-images/templateImages/MatrixNavigation.svg create mode 100644 assets/site-images/templateImages/Side-to-Side-invert.svg create mode 100644 assets/site-images/templateImages/Side-to-Side.svg create mode 100644 assets/site-images/templateImages/SideToSide-invert.svg create mode 100644 assets/site-images/templateImages/ascending-button-preview-invert.svg create mode 100644 assets/site-images/templateImages/ascending-button-preview.svg create mode 100644 assets/site-images/templateImages/ascending-nav-left-invert.png create mode 100644 assets/site-images/templateImages/ascending-nav-left.png create mode 100644 assets/site-images/templateImages/ascending-nav-right-invert.png create mode 100644 assets/site-images/templateImages/ascending-nav-right.png create mode 100644 assets/site-images/templateImages/ascending-navigation-invert.svg create mode 100644 assets/site-images/templateImages/ascending-navigation.svg create mode 100644 assets/site-images/templateImages/coming-soon-invert.svg create mode 100644 assets/site-images/templateImages/coming-soon.svg create mode 100644 assets/site-images/templateImages/drill-down-card-example-invert.svg create mode 100644 assets/site-images/templateImages/drill-down-card-example.svg create mode 100644 assets/site-images/templateImages/drill-down-datatable-example-invert.svg create mode 100644 assets/site-images/templateImages/drill-down-datatable-example.svg create mode 100644 assets/site-images/templateImages/drill-down-list-example-invert.svg create mode 100644 assets/site-images/templateImages/drill-down-list-example.svg create mode 100644 assets/site-images/templateImages/globalheader-footer-small.png create mode 100644 assets/site-images/templateImages/globalheader-footer.png create mode 100644 assets/site-images/templateImages/globalheader-full.png create mode 100644 assets/site-images/templateImages/globalheader-full.svg create mode 100644 assets/site-images/templateImages/globalheader-greenlake.png create mode 100644 assets/site-images/templateImages/globalheader-hpe.png create mode 100644 assets/site-images/templateImages/globalheader-nav.png create mode 100644 assets/site-images/templateImages/globalheader-sign-in.png create mode 100644 assets/site-images/templateImages/globalheader-small.png create mode 100644 assets/site-images/templateImages/globalheader.png create mode 100644 assets/site-images/templateImages/matrix-app-example-invert.svg create mode 100644 assets/site-images/templateImages/matrix-app-example.svg create mode 100644 assets/site-images/templateImages/matrix-music-invert.svg create mode 100644 assets/site-images/templateImages/matrix-music.svg create mode 100644 assets/site-images/templateImages/multicol-dashboard-invert.svg create mode 100644 assets/site-images/templateImages/multicol-dashboard.svg create mode 100644 assets/site-images/templateImages/tab-nav-invert.svg create mode 100644 assets/site-images/templateImages/tab-nav.svg create mode 100644 assets/site-images/templateImages/template-preview-banner-notification-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-banner-notification.svg create mode 100644 assets/site-images/templateImages/template-preview-cards-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-cards.svg create mode 100644 assets/site-images/templateImages/template-preview-child objects-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-child objects.svg create mode 100644 assets/site-images/templateImages/template-preview-dashboard-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-dashboard.svg create mode 100644 assets/site-images/templateImages/template-preview-data-visualization-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-data-visualization.svg create mode 100644 assets/site-images/templateImages/template-preview-filtering-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-filtering.svg create mode 100644 assets/site-images/templateImages/template-preview-form-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-form.svg create mode 100644 assets/site-images/templateImages/template-preview-global-header-1.svg create mode 100644 assets/site-images/templateImages/template-preview-global-header-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-global-header.svg create mode 100644 assets/site-images/templateImages/template-preview-hubnspoke-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-hubnspoke.svg create mode 100644 assets/site-images/templateImages/template-preview-i18n-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-i18n.svg create mode 100644 assets/site-images/templateImages/template-preview-list-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-list.svg create mode 100644 assets/site-images/templateImages/template-preview-navigation-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-navigation.svg create mode 100644 assets/site-images/templateImages/template-preview-notifications-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-notifications.svg create mode 100644 assets/site-images/templateImages/template-preview-pagelayout-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-pagelayout.svg create mode 100644 assets/site-images/templateImages/template-preview-persistent-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-persistent.svg create mode 100644 assets/site-images/templateImages/template-preview-scrolling-pagination-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-scrolling-pagination.svg create mode 100644 assets/site-images/templateImages/template-preview-table-customize-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-table-customize.svg create mode 100644 assets/site-images/templateImages/template-preview-wizard-invert.svg create mode 100644 assets/site-images/templateImages/template-preview-wizard.svg create mode 100644 assets/site-images/typography-light.svg create mode 100644 assets/site-images/whatis/app.svg create mode 100644 assets/site-images/whatis/base.svg create mode 100644 assets/site-images/whatis/combining.svg create mode 100644 assets/site-images/whatis/tailor.svg create mode 100644 assets/site-images/whatis/tools.svg create mode 100644 assets/site-images/windows.svg create mode 100644 assets/site-images/woman-glc.jpeg create mode 100644 assets/site-images/woman-man-server-room.jpeg diff --git a/01-what-it-is.md b/01-what-it-is.md new file mode 100644 index 0000000..52913b8 --- /dev/null +++ b/01-what-it-is.md @@ -0,0 +1,112 @@ +# 01 — What the HPE Design System is + +## The short version + +An open-source library of UI components, design tokens, page templates, and +written guidance, published so that HPE software looks and reads like one +company. It is maintained in public on GitHub and documented at +`design-system.hpe.design`. + +It is built on Grommet, a React component library. HPE's brand styling is +applied to Grommet through a theme package, and the same styling is published +separately as tech-agnostic design tokens for teams that do not use React. + +## What ships + +Everything lives in one pnpm monorepo, `grommet/hpe-design-system`, under the +Apache-2.0 license. Published artifacts as of 2026-07-30: + +| Package | Version | What it is | +| --- | --- | --- | +| `hpe-design-tokens` | 2.2.3 | The design tokens, in multiple output formats | +| `@hpe-design/icons-grommet` | 1.2.0 | The HPE icon set as React components | +| `@hpe-design/icons-svg` | 0.2.0 | The same icons as raw SVG | +| `hpe-design-system-codemods` | 0.2.1 | Automated migrations between versions | + +Two related packages live outside this repo: + +- `grommet` — the underlying component library (v2, `v2.grommet.io`) +- `grommet-theme-hpe` — the HPE theme for Grommet + (`github.com/grommet/grommet-theme-hpe`) + +The pairing matters: `grommet-theme-hpe` v8.x carries `hpe-design-tokens` v2. +See `03-design-tokens.md` for the full version map. + +## What the documentation site contains + +Doc page counts, read from the repo on 2026-07-30: + +| Area | Pages | Purpose | +| --- | --- | --- | +| `foundation/` | 20 | Brand, color, typography, spacing, icons, accessibility, voice and tone | +| `design-tokens/` | 11 | Token model, naming, versioning, consumption | +| `components/` | 48 | One page per component, plus an `all-components` index | +| `templates/` | 27 | Multi-component patterns (dashboards, wizards, forms, navigation) | +| `learn/` | 4 | Tutorials (grid fundamentals, the box model, toolbar and datatable how-tos) | + +The site is a Next.js static export hosted on Netlify. It renders entirely in +the browser, publishes no sitemap, and returns 404 on `robots.txt`. Fetching a +page with `curl` gets you a 1.5 KB shell and no content. To read it +programmatically, read the MDX in the GitHub repo instead. + +## The stated philosophy + +Three pillars, quoted from `foundation/philosophy-and-principles`: + +- Human-centered design +- A common design language +- Collaboration and community + +Four design principles, each with concrete sub-rules on the page: + +1. **Focus on the experience.** Consider the use cases; simplify end to end. +2. **Simplify.** Reduce visual and cognitive overload; understand why each + element is needed. +3. **Be intuitive.** Use common UI paradigms and consistent terminology; make + designs self-documenting so users do not need the help docs. +4. **Lead people to success.** Show only choices that apply to the current + context; order fields most-common-first; reveal fields only when they apply; + add safeguards against destructive mistakes. + +The principles page states they apply to "anyone authoring or authorizing any +form of design on behalf of HPE," which includes people who are not designers. + +## Authoritative vs advisory + +This distinction comes up in reviews, so it is worth being precise. + +- **Brand Central** (`brandcentral.hpe.com`) owns the corporate brand: logo + files, logo usage rules, the master color specification, typography files, + photography. Logo usage is governed by the HPE Terms of Use. +- **The Design System** owns the digital product expression of that brand. It + says explicitly that its "color palette and guidance differ from Brand + Central," that the difference is deliberate, that it was made in partnership + with HPE Brand, and that product teams should "prioritize the HPE Design + System palette when selecting colors for app or web experiences." + +So for a shipping software UI, the Design System is the operative reference. +For a logo lockup, a printed asset, or anything marketing-facing, Brand Central +governs. + +## How to get help or contribute + +- Slack channel `#hpe-design-system`, on both `grommet.slack.com` (public + Grommet workspace) and the HPE enterprise Slack. +- Designers request access to the HPE Design System Figma team by creating a + Figma account with an HPE email address, then requesting to join the team + from the HPE icon in the Figma sidebar. +- The repo carries a `knowledge/` directory it describes as "the AI-first + knowledge system for the HPE Design System": agent orchestrators for + contributing to the design system itself. Six capabilities are listed + (docs refactor, component creation, pattern creation, design-tokens + publishing, package release, alignment audit), but only **docs-refactor** is + marked active. The rest are planned stubs. + +## Open questions + +- Is `grommet.slack.com` reachable from an HPE account without a separate + signup, or is the HPE enterprise Slack channel the practical route? +- Does the design system team take intake from product teams for new + components, and what is the lead time? +- Who owns the design system inside HPE (which org, which VP)? The docs name a + Slack channel but no owning organization. diff --git a/02-brand-foundations.md b/02-brand-foundations.md new file mode 100644 index 0000000..2a5069f --- /dev/null +++ b/02-brand-foundations.md @@ -0,0 +1,217 @@ +# 02 — Brand foundations + +Concrete values, so a review question can be settled without opening the site. + +## Logo and the Element + +HPE has two marks that matter for software. + +**The HPE logo** (the full word-mark) is for establishing the brand in layouts +with less dense content. Place it top-left or bottom-left. The docs state +neither placement is preferred over the other. + +**The Element** (the green symbol alone) is the one that governs product UI: + +> Always use the HPE Element at the top-left of your service or product +> experience. To ensure consistency across HPE, the Element should always be +> accompanied by the company name and product/service name. Do not veer from +> the layout and spacing of the elements. + +Three rules fall out of that, and they are the ones a product UI most often +breaks: + +1. Element top-left, not centered, not right. +2. Element alone is not enough. Company name plus product name must appear + with it. +3. The lockup spacing is fixed. Do not re-space it. + +Both marks have a positive and a reversed (dark background) variant: +`HPE_logo_full-clr_pos_rgb.svg` and `HPE_logo_full-clr_rev_rgb.svg`. + +All brand element usage is subject to the HPE Terms of Use. Logo files and the +full usage rules are on Brand Central, not in the design system. + +HPE Aruba Networking has its own word-mark rules, also on Brand Central. + +## HPE GreenLake badge: retired + +As of the current docs, the existing HPE GreenLake badge is **retired and must +not be added to any new material**. GreenLake is described as launching a new +brand "later this year" with a new logo, visual identity, messaging, and naming +updates. Until then, existing GreenLake materials are frozen: make no changes. + +This is a live constraint. Any new UI that would have carried a GreenLake badge +should not add one. + +## Color + +### The rule + +Do not put hex values in a product UI. Apply semantic tokens. The docs give +four reasons, and they are all practical rather than stylistic: + +- Alignment with the current theme, which changes without your involvement +- Accessibility contrast is already solved in the token pairs +- Light and dark mode switching works for free +- A theme update propagates by version bump instead of a find-and-replace + +### HPE green + +The brand green is primitive token `base.color.green.600`, value **`#01a982`**. +Its semantic name is `color.decorative.brand`. That is the green people mean +when they say "HPE green." + +Note that the *brand* green is not the *primary action* green. Interactive +primary surfaces use a darker value in light mode and a brighter one in dark +mode, for contrast reasons: + +| Purpose | Light mode | Dark mode | +| --- | --- | --- | +| `color.decorative.brand` | `green.600` `#01a982` | `green.600` `#01a982` | +| `color.background.primary.strong` (rest) | `green.700` `#068667` | `green.550` `#05cc93` | +| `color.background.primary.strong` (hover) | `green.800` `#006750` | `green.500` `#00e0af` | +| `color.text.primary` / `color.icon.primary` | `green.800` `#006750` | `green.550` `#05cc93` | + +The full green ramp: 100 `#d1ffee`, 125 `#aafade`, 400 `#00e0af`, 450 `#66ebcf`, +500 `#00e0af`, 550 `#05cc93`, 600 `#01a982`, 650 `#009a71`, 700 `#068667`, +800 `#006750`, 900 `#074738`, 1000 `#093d32`. + +### Surface and text values + +| Token | Light | Dark | +| --- | --- | --- | +| `color.background.back` | `#f7f7f7` | `#1d1f27` | +| `color.background.front` | `#ffffff` | `#292d3a` | +| `color.background.floating` | `#ffffff` | `#22252e` | +| `color.text.default` | `#3e4550` | `#e6e8e9` | +| `color.text.strong` / `color.text.heading` | `#292d3a` | `#ffffff` | +| `color.text.weak` | `#606a70` | `#b1b9be` | +| `color.border.default` | `#b1b9be` | white at 36% opacity | + +Layering convention: start a product on `background.back`, layer surfaces with +`background.front`, and use `background.floating` for elevated surfaces. Prefer +a contrast background over a border when separating dense regions, because a +border adds visual noise that a background change does not. + +`color.background.screenOverlay` dims inactive content behind a center layer, +side drawer, or dialog. + +### The eight color families + +Background, border, text, icon, decorative, data visualization, foreground, +status. Each has a defined job: + +- **Decorative** carries brand and accent but never status. Do not substitute a + decorative color for a status color. +- **Data visualization** is a categorical palette built to be distinguishable + and colorblind-friendly. Use it in series order, starting at the first token. + Consolidate thin series into an "other" bucket with drill-down rather than + extending the palette. +- **Foreground** fills quantitative regions: meters, progress bars, indicators. +- **Status** covers critical, warning, ok, informational, unknown. Use it only + where it carries meaning, and always pair it with an icon or a label. + +### Two accessibility rules on color + +1. **Pairing.** Strong background colors require the `onStrong` text and icon + tokens. Getting this wrong is the most common contrast failure. +2. **Never color alone.** Anything conveyed by color must also be conveyed by a + text label, an icon, a pattern, or an underline. + +## Typography + +The typeface is **HPE Graphik**, with **GraphikXXCondensed** as a condensed +companion. Digital experiences use Light, Regular, Medium, Semibold, and Bold. + +Weight tokens: thin 100, light 300, regular 400, medium 500, semibold 600, +bold 700, black 900. + +### Font delivery + +Point at the web-hosted fonts so users get the current version. The CDN base is +`https://www.hpe.com/content/dam/hpe/fonts/graphik/`, with files like +`HPEGraphik-Regular-Web.woff2`, `-Medium-`, `-Semibold-`, `-Bold-`, +`-Extralight-`. + +Grommet teams get these URLs from `grommet-theme-hpe` already. Non-Grommet +teams copy the `@font-face` block from the typography page. Offline or desktop +use requires downloading OTF or web files from Brand Central. + +### Heading rules + +Headings use `rem` units so they scale with the browser's font setting. + +The rule that gets broken: **pick the heading level for semantics, pick the +token for size.** Never demote an `

` to an `

` because you wanted +smaller text. Apply a heading token instead. + +``` +Correct:

Card title

+Incorrect:

Card title

(to get the size) +``` + +Levels beyond 3 are described as rarely needed and a signal the content is too +dense. Before reaching for h4 through h6, reorganize. + +Paragraphs differ from plain text in that they carry a `maxWidth`, which caps +line length for readability. Use the `maxWidth` token that matches the text +t-shirt size. + +## Spacing + +Spacing is a subset of the scale system, expressed as t-shirt sizes. The +resolved pixel values: + +| Token | px | Token | px | +| --- | --- | --- | --- | +| `hair` | 1 | `small` | 16 | +| `6xsmall` | 2 | `medium` | 24 | +| `5xsmall` | 3 | `large` | 32 | +| `4xsmall` | 4 | `xlarge` | 48 | +| `3xsmall` | 6 | `xxlarge` | 64 | +| `xxsmall` | 8 | `3xlarge` | 96 | +| `xsmall` | 12 | | | + +Three rules: + +1. **Spacing tokens are for layout, not elements.** Use them on cards, layers, + grids. For element-level components use component tokens or element tokens, + which size correctly across screen sizes. +2. **Use gap and padding. Avoid margin.** Margin produces unpredictable + responsive behavior. +3. **Prefer spacing over borders.** The system deliberately minimizes borders, + building hierarchy from spacing, typography, and background color instead. + +## Icons + +Icons ship as `@hpe-design/icons-grommet` (React) and `@hpe-design/icons-svg`. +There is an interactive Storybook at `hpe-design-icons-grommet.netlify.app` and +a Figma production file. A migration guide covers moving from `grommet-icons` +to the HPE set. + +Usage rules: + +- Universal symbols (search, delete, close) can stand alone. Anything less + common needs a label. +- If an icon always needs a label to be understood, drop the icon and use text. +- Never use the same symbol for different meanings across products. +- Default size is medium; sizes align to the typography scale. When inline with + text, set `height` to match the text size prop. +- Default color token is `icon-default`. Emphasis variants: `icon-strong`, + `icon-weak`, `icon-disabled`, `icon-primary`. +- Brand or third-party SVGs keep their native colors via `color="plain"`. +- Status icons are reserved for system health. Do not use them decoratively. +- Every icon carries an `aria-label`; override it with `a11yTitle`. Purely + decorative icons need `aria-hidden` so screen readers skip them. + +The icon library is semantically named and carries metadata, so search by +intent rather than by shape. + +## Open questions + +- What is the full `onStrong` token set, and is there a published contrast + matrix, or is pairing verified per-case? +- Are the data visualization palette values fixed across theme versions, or do + they shift on a major bump? A shift would break saved dashboards. +- Does HPE Graphik cover the character sets needed for the languages HPE + products ship in, or is there a fallback stack for CJK and Cyrillic? diff --git a/03-design-tokens.md b/03-design-tokens.md new file mode 100644 index 0000000..e28c99d --- /dev/null +++ b/03-design-tokens.md @@ -0,0 +1,168 @@ +# 03 — Design tokens + +Design tokens are the delivery mechanism for HPE's visual style. They are the +reason a product can adopt a brand refresh with a version bump instead of a +redesign, and they are the answer to "how do we do this without React." + +## What a token is + +A named value carrying its intended usage. Four properties, two required: + +| Property | Required | Example | +| --- | --- | --- | +| Name | yes | `hpe.color.background.back` | +| Value | yes | `#f7f7f7` | +| Type | no | color, dimension, shadow | +| Description | no | how the token should be used | + +The point is that consumers reference the **name**, never the value. When HPE +updates the value, every consumer pointing at the name picks it up on upgrade. + +## The three tiers + +Tokens are layered by specificity. The rule for consuming them: + +> Begin with the most specific token level available. Look first to see if a +> component token exists. If not available, use semantic tokens as a fallback. + +### Primitive + +The raw palette. Names describe the value, not where to use it. Values are +always concrete CSS values: a hex code, a pixel, a rem. + +``` +hpe.base.color.green.600 → #01a982 +hpe.base.dimension.400 → 16 +``` + +**Primitive tokens must not be used directly in a product.** They exist to be +referenced by the tiers above. + +### Semantic + +Names say when and where to apply. Values reference a primitive or another +semantic token. + +``` +hpe.color.background.back → {base.color.grey.50} in light, {base.color.grey.1300} in dark +hpe.spacing.large → differs by viewport width +``` + +This is where context-dependence lives. One semantic name resolves to different +values in light versus dark mode, or wide versus narrow viewport. That is the +whole mechanism behind free dark mode. + +### Component + +Decisions for a single component or a family. Values reference any lower tier. + +``` +hpe.button.primary.rest.background +``` + +Component tokens encode state (rest, hover, active, disabled, focus) as part of +the name. See the site's `design-tokens/component-states` page for the state +model. + +## Token file layout in the repo + +`packages/hpe-design-tokens/tokens/`: + +- `primitive/` — `primitives.default.json`, plus pinned `.v0` and `.v1` files +- `semantic/` — `color.light.json`, `color.dark.json`, `dimension.default.json`, + `dimension.small.json`, `global.default.json`, plus `.v0` and `.v1` variants +- `component/` — `component.default.json`, `element.default.json`, plus variants + +Two things to notice. First, the old major versions are kept in-tree rather than +only in git history, which is what makes opt-in-by-mode work in Figma. Second, +`dimension.small.json` alongside `dimension.default.json` is the responsive +mechanism: the same semantic dimension name resolves smaller on narrow +viewports. + +There is also a `deprecated.*` namespace inside the primitives, which is where +superseded values go. `deprecated.base.color.green.400` is `#17eba0` where the +live `base.color.green.400` is `#00e0af`, so a stale reference will render a +visibly different green. + +## Versioning + +`hpe-design-tokens` follows semver with one adaptation: **a major version can be +triggered by a brand change alone**, with no API break. + +| Increment | Trigger | +| --- | --- | +| MAJOR | Significant change to HPE's brand expression, or an incompatible API change | +| MINOR | New token, or a small expected value change (darkening a text color after user testing) | +| PATCH | Backward-compatible fix (a typo in a value, a color corrected to meet contrast) | + +The reason a brand change alone forces a major: if service A is on v1 and +service B is on v2, the two will not look like the same company. The major +version is the signal that a mismatch exists. + +### Version map + +| Tokens | Theme | Period | Notes | +| --- | --- | --- | --- | +| `^2.0.0` "v2-Landmark" | `grommet-theme-hpe` 8.x | Oct 2025 to present | Landmark palette, HPE Graphik font face. Default in the Figma V2 library. Current release 2.2.3 | +| `^1.0.0` | `grommet-theme-hpe` 6.x–7.x | Feb 2025 to Sep 2025 | Opt-in via "v1" modes in Figma | +| `^0.9.0` | `grommet-theme-hpe` 5.x | May 2023 to Jan 2025 | Opt-in via "v0" modes in Figma | + +v2-Landmark is a breaking change from v1. Migration guides live in the GitHub +wikis for both `hpe-design-system` and `grommet-theme-hpe`. + +v0.9.0 to v1.0.0 had **no breaking API changes in the tokens** (only value +changes), but `grommet-theme-hpe` v5 to v7 did break, and the migration is +documented in two steps: 5.x to 6.x for visual treatments, then 6.x to 7.x for +expanded t-shirt sizing. + +### The recommended adoption trick + +For a product adopting tokens for the first time, the docs recommend mapping +local components to **v0.9.0 tokens first**. That reaches style parity with the +product's existing look, so QA is comparing against something familiar and any +diff is a real bug rather than an intended restyle. Only then upgrade forward. + +This is worth remembering. It converts one large risky change into two smaller +ones with a verifiable checkpoint between them. + +## Consuming tokens + +- **React plus Grommet:** install `grommet-theme-hpe`. Tokens, fonts, and + component defaults come with it. This is the environment the design system + targets and the one with the most examples. +- **Anything else:** consume `hpe-design-tokens` directly. It is published to + npm in multiple output formats and is tech-agnostic. The site page + `design-tokens/using-design-tokens-in-code` covers the formats. +- **Figma:** tokens appear as Figma variables. `design-tokens/using-design- + tokens-in-figma` covers setup, and the "Themes and modes" Figma file covers + switching between v0, v1, and v2 modes. + +The tokens are built with Style Dictionary. The repo has custom transforms and +formats under `packages/hpe-design-tokens/src/`, plus a +`apps/design-tokens-manager` application and a `contracts/schemas` directory +that validates token structure. + +### A detail worth knowing about units + +Dimension primitives are stored as **unitless numbers** (`base.dimension.400` is +the number `16`, not `"16px"`). The `numberToDimension` transform assigns units +at build time, and it does not treat them all the same: + +- `fontSize` and `lineHeight` are divided by 16 and emitted as **`rem`** +- everything else (spacing, radius, padding, width, height, border width, + breakpoints) is emitted as **`px`** + +So type scales with the user's browser font setting and layout does not. If you +read a raw token JSON value and see a bare number, that is why. + +`hpe-design-system-codemods` (v0.2.1) automates some migration edits. + +## Open questions + +- Which output formats does `hpe-design-tokens` actually publish (CSS custom + properties, SCSS, JSON, Swift, XML)? Read the package before promising a + non-web team it is covered. +- Is there a deprecation policy with a stated support window for a major + version, or does an old major just stop receiving fixes? +- How long did a real product take to migrate v1 to v2-Landmark? A worked + example would size the effort better than the migration guide does. diff --git a/04-voice-and-tone.md b/04-voice-and-tone.md new file mode 100644 index 0000000..eefeb76 --- /dev/null +++ b/04-voice-and-tone.md @@ -0,0 +1,186 @@ +# 04 — Voice and tone for UI strings + +Scope note: these are HPE's rules for **text inside a product UI**: labels, +buttons, error messages, notifications, help text, empty states. They are not +the rules for prose in this repo. See the note at the end. + +The source page (`foundation/voice-and-tone`) is by far the largest doc on the +site at roughly 55 KB, which is a signal in itself. HPE treats UI copy as a +design surface, not an afterthought. + +## Capitalization + +Five capitalization styles exist. HPE uses one of them for almost everything. + +**Sentence case is the default.** First letter capitalized, everything else +lowercase except proper nouns. Applied to: attribute labels, column headings, +legends, tabs, menus, paragraphs, tips, notifications, help, page titles, +dialog titles, section and subsection headings, and buttons. + +Two hard prohibitions: + +- **Never begin a sentence or phrase with a lowercase letter.** Too casual for + the brand. +- **Never use all caps.** It reads as yelling and increases user stress. + +**Title case is only for** the title of an event, program, or website, and for +proper nouns. HPE brand and product names are proper nouns. + +### The button exception + +Buttons take sentence case **except** those ending in one of these short +prepositions: `at, by, for, in, of, off, on, out, to, up`. Those get the +preposition capitalized. + +``` +Correct: Sign Up +Incorrect: Sign up +``` + +This one is counterintuitive and easy to get wrong in review, so it is worth +quoting verbatim when it comes up. + +### Do not promote common nouns + +The docs are direct about this: "Fight the urge to elevate normal nouns to +proper noun status." On a "data sources" page, write *data sources*, not +*Data Sources*, unless it is genuinely a proper noun. + +### Referring to UI elements + +When you describe an action generally, use lowercase. When you name a specific +button or page, match that element's actual case. + +- General action: "To create a data fabric you must first create a new cluster." +- Specific page: "First, go to the *Create a New Cluster* page to create a data + fabric." + +## Acronyms + +The stated position is that acronyms are exclusionary. They create an insider +language and force everyone else to decode before they comprehend. + +Two conditions, both required: + +1. Define it on first use. +2. Only use the acronym at all if it appears **multiple times** in the message. + +The worked example is unusually strict, so here it is in full: + +- Incorrect: *The UBC is meeting tomorrow.* +- Incorrect: *The UBC (University Building Council) is meeting tomorrow.* +- Incorrect: *The University Building Council (UBC) is meeting tomorrow.* +- Correct: *The University Building Council (UBC) is meeting tomorrow. If you + have UBC-related business, send it to the UBC administrator for addition to + the meeting agenda.* + +The third one is incorrect because the acronym is introduced and then never +used again. Expanding it earns nothing. + +## Product names + +Do not use full brand and product names in running messages. Set context once, +then shorten. The docs' own example: *HPE GreenLake Lighthouse* is a mouthful, +so use *Lighthouse* on second and subsequent references. + +## Point of view + +Three options, with the effect of each spelled out: + +- First person: "We noticed the server is malfunctioning." +- Second person: "Your server is malfunctioning." +- Third person: "The server is malfunctioning." (focus on neither writer nor + reader) + +The page presents these as choices rather than mandating one, so pick by +context and stay consistent within a flow. + +## Do + +- Use articles ("a", "an", "the") so the text does not read like a robot. +- Punctuate every sentence, correctly, including internally. +- **Use contractions.** "you're", "we'll", "isn't". This is explicitly + encouraged for a conversational tone. +- Put adjectives before nouns: *the specified operation is*, not *the operation + specified is*. +- Order multiple adjectives correctly: opinion, size, age, shape, color, origin, + material, purpose, then noun. So *two failing SATA SSD drives*, never *SSD + SATA failing two drives*. + +## Do not + +These are the rules that most often catch real error strings: + +- **Do not blame the user.** Never say *bad request*. Explain what is wrong. +- **Do not hedge.** Never tell a user to *try* or *attempt* something; it does + not convey confidence. Write *Reset the interconnect*, not *Try resetting the + interconnect*. +- **Do not say "retry the operation"** in most cases. If the user entered an + illegal value, telling them to supply a correct one is enough. The retry is + obvious. +- **Never say "retry after some time."** Be specific: *after 3 minutes*, or + *after the refresh has completed*. +- **Do not refer to "the" or "your" administrator.** The person reading the + message usually is the administrator. Name the actual role or action. +- **Limit "please."** It is allowed, but starting every action phrase with it + is not appropriate. +- **Avoid possessives.** Not *the server hardware's power is off*. +- **No run-on sentences.** +- **No internal terminology in external messaging.** +- **Do not use a resource's name as an adjective.** Write *the uplink set "ABC" + has…*, not *the ABC uplink set has…*. +- **Avoid "input" as a noun in instructions.** Write *Specify a valid + certificate*, not *Specify a valid certificate as input*. Write *One of the + parameters is null*, not *One of the input parameters is null*. +- **Parentheses:** no spaces inside, spaces outside. *this is bad (yes it is)*. + The exception is constructions like *server(s)*. + +## Term list + +Spelling and capitalization that must be exact: + +`Kubernetes`, `Ethernet`, `Fibre Channel`, `FCoE`, `SNMP`, `SNMPv3`, +`ID` (not id or Id), `OK` (not ok, Ok, or okay), `I/O` (not IO or i/o), +`API` (not xApi). + +Word choices: + +| Do not write | Write | +| --- | --- | +| app | application | +| internal error | unexpected problem | +| & | and | + +Distinctions: + +- **"Log in"** is a verb: *Log in to the server*. +- **"Login"** is a noun or adjective: *The login token has expired*. +- **"Filesystem"** is one word. +- **"Host name"** is the name of a host. **"Hostname"** is the Unix command. + +## Do not apply these rules to documentation + +Worth stating, because it causes real friction: these rules are tuned for +**short strings inside a running product**. They are not a house style for +prose. + +If your team already has a writing standard for docs, specs, or release notes, +expect it to disagree with this page in places. HPE wants contractions and a +conversational register in UI text, mandates a specific capitalization scheme +for labels, and permits constructions (*please*, used sparingly) that a tighter +prose standard would cut. + +Neither set overrides the other, because they govern different artifacts. Apply +the one that matches what you are writing. A button label follows this page. A +design document does not have to. + +## Open questions + +- Is there an approved localization process for UI strings, and does the + sentence-case rule survive translation into languages with different + capitalization conventions? The site has an `internationalization` template + page that may answer this. +- Does HPE run a copy review gate before a product UI ships, or is voice and + tone self-policed by the product team? +- The term list is short and clearly grown by accretion. Is there a longer + internal HPE terminology database that supersedes it? diff --git a/05-accessibility.md b/05-accessibility.md new file mode 100644 index 0000000..0f5f459 --- /dev/null +++ b/05-accessibility.md @@ -0,0 +1,129 @@ +# 05 — Accessibility + +HPE's stated position, quoted: **"We believe that being accessible is a +requirement, not an option."** + +## The standard + +HPE aligns to **WCAG level A and AA**, and to the four core principles +(perceivable, operable, understandable, robust). The page states the level +plainly: "The guidelines identified as level A and AA are the required design +elements for all applications and are incorporated in the US Section 508 +standard and HPE's Design System." AAA is not required. + +One inconsistency to be aware of: the top of the page cites **WCAG 2.2**, while +the government standards section further down links and cites **WCAG 2.1**. The +level commitment (A and AA) is consistent across both; the version reference is +not. Assume 2.2 for new work, since that is what the normative statement at the +top of the page says, but expect to see 2.1 cited in older HPE material. + +Named regulatory drivers on the same page: **US Section 508**, the +**Americans with Disabilities Act**, and the **European Accessibility Act**. +The EAA is the one most likely to bite on a product sold into the EU. + +The scope the docs describe is broader than the usual reading of +"accessibility." It covers keyboard navigation, speech input, screen readers, +alternative input devices such as head pointers, screen magnification, and color +blindness, and it explicitly includes temporary and situational disability. The +figure cited is that about 25% of the United States population lives with some +type of disability, permanent or not, sourced to the CDC. + +## Who is responsible for what + +This is the part that decides arguments, so it is worth having straight. The +answer depends on whether you use Grommet plus the HPE theme or only the +tokens. + +| Consideration | Grommet + HPE theme | Design tokens only | +| --- | --- | --- | +| Color contrast ratios | Handled | You apply the color, pairing, and usage guidance yourself | +| Typography (legibility, scaling, line height) | Handled | You implement from the typography system | +| Component behavior (keyboard nav, ARIA, focus) | Handled | You implement accessible behavior manually | +| Focus styles and states | Handled | You implement from the component-states tokens | +| ARIA roles and attributes | Handled, but you supply context-specific values | Fully your responsibility | +| Responsiveness across breakpoints | Handled | You implement from layout and spacing tokens | +| Semantic HTML structure | Handled | You ensure correct structure | +| Alt text and descriptions | **Yours** | **Yours** | +| Labeling (forms, buttons, errors) | **Yours** | **Yours** | +| Readability of copy | **Yours** (follow voice and tone) | **Yours** | + +Two conclusions fall out of this table. + +First, **Grommet plus the HPE theme buys most of the mechanical accessibility +work.** That is the strongest practical argument for the React path, stronger +than the visual consistency argument. + +Second, **the bottom three rows are never bought.** Alt text, labels, and +readable copy are the product team's job under either path. A team that adopts +Grommet and then ships unlabeled icon buttons has not become accessible. + +## Design-time coverage + +Every component and asset in the HPE Design System Figma library is built on +design tokens that align with accessibility standards. Using the prebuilt +components or applying the tokens as Figma variables gets you WCAG-compliant +styles without doing contrast math. + +This is worth stating plainly to designers: the contrast work is already done +inside the token pairs, and it is undone the moment someone picks a custom +color off the Figma color wheel. + +## Testing + +### The rule that sets expectations + +**Automated testing tools catch approximately 30 to 50% of accessibility +violations.** Manual testing is not optional. Any plan that consists of "we run +axe in CI" covers at best half the problem. + +### Recommended practice + +- **Shift left.** Violations avoided at design time cost nothing to fix. +- **Try it yourself.** Turn the monitor off and use a screen reader. Unplug the + mouse. Use simulator tools for color blindness, dyslexia, and tunnel vision. +- **Test with real users with disabilities.** The docs name Bill Tipton of the + HPE Product Accessibility Office as an internal resource for usability + testing. He has used a screen reader daily since losing his eyesight in 1999. + +### Tooling + +CI and automation: + +- Lighthouse GitHub Action (the design system runs this on its own PRs) +- `axe-core` (React integration available) +- `axe-testcafe` + +Browser extensions: + +- axe DevTools +- Access Assistant (Level Access), which saves reports to track compliance over + time +- WAVE +- Lighthouse (built into Chrome DevTools) +- ANDI + +Simulators: + +- Silktide (color blindness, dyslexia, tunnel vision, cataracts, blindness) +- WebAIM Color Contrast Checker +- Colorblind Web Page Filter (Toptal) + +## Internal HPE resources + +The docs link to the **HPE Product Accessibility Program Office** on SharePoint, +which publishes designer and developer guides, and to **HPE Accessible Design +Training**, a set of videos under 10 minutes each with an accompanying "Pocket +Guide" of takeaways. Both are on `hpe.sharepoint.com` and need an HPE login. + +## Open questions + +- Is there a required accessibility sign-off before a product release, and who + gives it? The docs describe resources and advocacy, not a gate. +- Does HPE publish VPATs or ACRs per product, and who writes them? This matters + for public sector deals where an ACR is a procurement requirement. +- Is the operative version 2.1 or 2.2? The page cites both. Worth asking the + accessibility office which one an audit would be run against. +- Does the accessibility office have capacity to test every product, or is Bill + Tipton's availability the practical bottleneck? +- What is HPE's compliance deadline posture on the European Accessibility Act, + and does it change the priority of any of this? diff --git a/06-components-templates.md b/06-components-templates.md new file mode 100644 index 0000000..21df3f5 --- /dev/null +++ b/06-components-templates.md @@ -0,0 +1,136 @@ +# 06 — Components and templates + +Two layers with different jobs. Components are single UI elements. Templates +are compositions of components that solve a recurring product problem, with the +design decisions already made. + +The practical value of the template layer is that it settles arguments. When a +team debates how a wizard should behave or where a destructive confirmation +goes, there is an HPE answer already written down. + +## Components + +48 documented component pages, plus an `all-components` index. Grouped by what +they do: + +**Layout and structure** +`box`, `grid`, `page`, `main`, `header`, `footer`, `pageheader`, `toolbar`, +`layer` + +**Input** +`textinput`, `textarea`, `maskedinput`, `dateinput`, `fileinput`, `rangeinput`, +`search`, `select`, `selectmultiple`, `checkbox`, `checkboxgroup`, +`radiobuttongroup`, `togglegroup` + +**Action and navigation** +`button`, `anchor`, `menu`, `tabs`, `pagination` + +**Content display** +`card` (with `call-to-action-card` and `navigational-card` variants), +`accordion`, `avatar`, `namevaluelist`, `tag`, `tip` + +**Feedback and state** +`notification`, `spinner`, `skeleton` + +**Data** +This is the largest family and the one most relevant to any management or +operations UI: +`data`, `datatable`, `datatablecolumns`, `datatablegroupby`, `dataview`, +`datafilter`, `datafilters`, `datasearch`, `datasort`, `datasummary` + +The `data` component is the container that wires the others together, giving +you search, filter, sort, and summary against one dataset without hand-wiring +state. Worth knowing before anyone builds a filterable table from scratch. + +## Templates + +27 template pages covering 26 topics. + +**Navigation** (five separate patterns, each for a different information shape) +- `navigation` (the overview) +- `ascending-navigation` — moving up a hierarchy +- `drill-down-navigation` — moving down into detail +- `side-to-side-navigation` — moving between peers +- `matrix-navigation` — moving across two dimensions +- `global-header` + +**Layout** +- `page-layouts` +- `content-layouts` +- `dashboards` + +**Data interaction** +- `filtering` +- `lists` +- `selector` +- `datatable-customization` +- `scrolling-and-pagination` + +**Forms and flows** +- `forms`, with a sub-page on `managing-child-objects` +- `wizard` +- `double-confirmation` — the pattern for destructive actions +- `empty-state` + +**Notifications** (three placements, three different jobs) +- `global-notifications` — system-wide, persistent +- `inline-notifications` — attached to content +- `toast-notifications` — transient + +**Other** +- `status-indicator` +- `popover` +- `code-blocks` +- `internationalization` +- `user-feedback-collection` + +## Which layer to reach for + +The stated token rule applies here by analogy: **start with the most specific +thing that exists.** + +1. Is there a template for this problem? Use it. The composition decisions are + made. +2. No template but components exist? Compose them. +3. Neither? Build from tokens, and consider raising it in + `#hpe-design-system`, since a gap that affects you likely affects others. + +## Learn + +Four tutorials, aimed at people new to Grommet rather than at design decisions: + +- `grid-fundamentals-part-one` +- `the-box-model-part-one` +- `how-to-add-additional-controls-to-a-toolbar` +- `how-to-add-search-and-filter-to-datatable-with-data` + +The "part one" naming on two of them with no part two suggests this section was +started and not finished. Treat it as a bonus, not a curriculum. + +## Reading component docs without the website + +The site renders in the browser and returns no useful content to `curl`. To +read a component's guidance programmatically, go to the MDX source: + +``` +https://github.com/grommet/hpe-design-system + → apps/docs/src/pages/components/.mdx + → apps/docs/src/pages/templates/.mdx +``` + +Raw file access works over `raw.githubusercontent.com`. The MDX carries the +prose and the best-practice do/don't pairs; the live examples are React +components imported from `apps/docs/src/examples/`. + +Component API reference (props) lives on Grommet's own site, +`v2.grommet.io/?theme=hpe`, not in the design system docs. The +design system says *when and why*; Grommet says *what the props are*. + +## Open questions + +- How much of the component set is HPE-specific versus plain Grommet with a + theme applied? This decides how much of the Grommet ecosystem transfers. +- Are the data components performant at the row counts a real usage dashboard + needs, or do they assume paged server-side data? +- Is there a template for the case of an application embedded inside another + HPE console, where the global header is owned by the host? diff --git a/07-adoption-and-compliance.md b/07-adoption-and-compliance.md new file mode 100644 index 0000000..55c07ef --- /dev/null +++ b/07-adoption-and-compliance.md @@ -0,0 +1,144 @@ +# 07 — Adoption and compliance + +What it actually costs to align a product UI with the HPE Design System, and +how to check whether one is aligned. + +## Three adoption paths + +### 1. React plus Grommet plus `grommet-theme-hpe` + +The path the design system is built for. Install the theme and you inherit +colors, fonts, component defaults, keyboard navigation, ARIA support, focus +handling, and responsive behavior. + +Cost: highest if the product is not already React. Lowest ongoing cost after +that, because brand refreshes arrive as a version bump. + +This is the only path where the accessibility table in `05-accessibility.md` +reads "handled" down most of the column. + +### 2. `hpe-design-tokens` only + +For any other stack. Tokens are tech-agnostic and published to npm. You get the +correct colors, type, and spacing. You do not get component behavior. + +Cost: moderate to adopt, permanent to maintain. Every accessible behavior +(keyboard, ARIA, focus, semantic structure, responsiveness) is yours to build +and re-verify. + +The docs recommend mapping to **v0.9.0 tokens first** to reach parity with the +product's current look, verify against familiar styling, then upgrade forward. +That turns one risky change into two with a checkpoint between them. + +### 3. Reference only + +Read the guidance, match by eye, use the templates as design references. Fine +for a prototype or an internal tool. Not defensible for a customer-facing HPE +product, because the values drift the moment the brand moves and nothing +signals that they have. + +## Review checklist + +Usable as a gate in a design or code review. Every item traces to a rule in the +docs, cited to its doc here. + +**Brand marks** (`02`) +- [ ] HPE Element is present at top-left of the product experience +- [ ] Element is accompanied by the company name and the product or service name +- [ ] Lockup spacing and layout are unmodified +- [ ] No HPE GreenLake badge on new material (the existing badge is retired) +- [ ] Correct positive or reversed logo variant for the background + +**Color** (`02`) +- [ ] No raw hex values in the UI. Semantic or component tokens only +- [ ] Primitive tokens are not referenced directly +- [ ] Status colors used only where they carry meaning, never decoratively +- [ ] Strong backgrounds pair with `onStrong` text and icon tokens +- [ ] Nothing is conveyed by color alone. Every case has a label, icon, pattern, + or underline as well +- [ ] Data visualization series start at the first token and proceed in order + +**Typography** (`02`) +- [ ] HPE Graphik loaded from the HPE CDN, not bundled or substituted +- [ ] Heading levels chosen for semantics; size set by token, never by demoting + a heading level +- [ ] Heading hierarchy has no skipped levels +- [ ] Paragraphs carry the `maxWidth` for their t-shirt size +- [ ] Sizes in `rem` so browser font settings scale the UI + +**Layout** (`02`) +- [ ] Spacing comes from the scale, not arbitrary pixel values +- [ ] Spacing tokens used for layout; component or element tokens for elements +- [ ] Gap and padding, not margin +- [ ] Borders only where spacing and background contrast are insufficient + +**Copy** (`04`) +- [ ] Sentence case throughout, including labels, columns, tabs, menus, dialogs +- [ ] Buttons ending in a short preposition capitalize it ("Sign Up") +- [ ] No all caps anywhere +- [ ] No string begins with a lowercase letter +- [ ] Acronyms defined on first use, and only used if repeated +- [ ] Long product names shortened after first reference +- [ ] Error messages do not blame the user, do not say "try", do not say + "retry after some time" +- [ ] No references to "your administrator" +- [ ] Term list observed: application not app, ID, OK, I/O, "log in" vs "login" + +**Accessibility** (`05`) +- [ ] Keyboard navigation reaches and operates every control +- [ ] Focus is visible on every focusable element +- [ ] All images and media have descriptive alt text +- [ ] All form fields, buttons, and errors have meaningful labels +- [ ] Decorative icons carry `aria-hidden`; meaningful icons carry a label +- [ ] Automated scan clean (axe or Lighthouse) +- [ ] **Manual test performed.** Automated tools catch 30 to 50% of violations, + so a clean scan is a floor and not a pass + +**Version hygiene** (`03`) +- [ ] Token major version recorded, and known to match sibling products. Two + HPE products on different majors will not look like the same company +- [ ] No references into the `deprecated.*` token namespace + +## What compliance is worth arguing about + +Not every item above carries the same weight. Ranked by consequence: + +1. **Accessibility failures.** These can be procurement blockers, and in some + jurisdictions legal exposure. Everything else on the list is cosmetic by + comparison. +2. **Element and logo misuse.** Governed by the HPE Terms of Use, and the one + category where a brand team is likely to intervene directly. +3. **Hardcoded hex values.** Not visible to a customer today, but this is what + makes the next brand refresh expensive rather than free. The cost lands + later, which is why it gets waved through. +4. **Copy rules.** Cheap to fix, visible to customers, and the thing that most + often makes an acquired product feel un-HPE. +5. **Spacing and type scale drift.** Real but low-stakes individually. It + accumulates into a UI that looks off without anyone being able to say why. + +## Where an acquired product typically stands + +Worth setting expectations before scoping any alignment work. A product that +joined HPE through acquisition usually has: its own component library, its own +color constants in code, its own typeface, its own copy conventions, and no +token layer at all. The realistic sequence is tokens first (path 2), copy +second (cheap, high visibility), component migration last if ever. + +The full React migration is rarely justified on brand grounds alone. It is +justified when the accessibility column in `05-accessibility.md` becomes a +requirement, because that is where the "handled" entries are worth real +engineering months. + +## Open questions + +- Is there an HPE-internal alignment audit or scorecard that products are + measured against? Nothing public suggests one. The design system repo does + carry an `alignment-audit` entry in its `knowledge/` directory, but it is a + planned stub scoped to auditing the design system's own docs, tokens, and + components, not product teams. Do not cite it as evidence of a product gate. +- What is the expected timeline for products to reach v2-Landmark, and is there + a deadline attached? +- For an embedded or OEM UI, whose brand governs, and does the Element rule + still apply? +- Does any HPE release process actually check the items above, or is this a + self-assessment? diff --git a/HOWTO-mirror-the-design-system.md b/HOWTO-mirror-the-design-system.md new file mode 100644 index 0000000..63ec587 --- /dev/null +++ b/HOWTO-mirror-the-design-system.md @@ -0,0 +1,417 @@ +# How to mirror the HPE Design System + +A runbook for reproducing everything in this folder: the guidance docs, the +452-icon set, the brand marks, and all 282 documentation graphics. + +Written to be handed to someone else and followed start to finish, by a person +or by an AI coding agent. Every command below was run and verified on +2026-07-30. Nothing here needs an HPE login, a VPN, or a token. + +Total time: about ten minutes, most of it the clone. + +--- + +## The problem you will hit first + +`https://design-system.hpe.design` looks like a normal documentation site. It +is not scrapeable. + +It is a **Next.js static export that renders entirely in the browser**. Fetch +any page and you get a 1.5 KB HTML shell with zero content: + +```bash +curl -s https://design-system.hpe.design/foundation/color | wc -c +# 1540 +``` + +There is also no sitemap and no robots.txt. Both 404: + +```bash +curl -s -o /dev/null -w '%{http_code}\n' https://design-system.hpe.design/sitemap.xml # 404 +curl -s -o /dev/null -w '%{http_code}\n' https://design-system.hpe.design/robots.txt # 404 +``` + +The Next.js data endpoint does not help either. The pages are `autoExport` with +empty `pageProps`, so `/_next/data//.json` returns 404. The +content is compiled into JavaScript chunks. + +**Do not try to scrape the site.** Do not reach for a headless browser. There +is a much better source. + +## The key insight + +The whole design system is **open source**: + +> `https://github.com/grommet/hpe-design-system` — Apache-2.0 + +Every page on that site is an MDX file in that repo. The icons, the graphics, +and the raw design token JSON are in there too. Clone it and you have +everything, in a form that greps. + +Find it yourself with: + +```bash +curl -s "https://api.github.com/search/repositories?q=hpe-design-system" \ + | grep -E '"full_name"|"html_url"' +``` + +## Step 1 — Clone + +Shallow clone. Full history is not needed and is much larger. + +```bash +git clone --depth 1 https://github.com/grommet/hpe-design-system.git hpeds +cd hpeds +git log -1 --format='%H %cI %s' # record this SHA for provenance +du -sh . # ~81 MB +``` + +Record the commit SHA. Version numbers in the docs move; citing a SHA makes +your notes checkable later. The mirror in this folder was taken at +`567c4d5` (2026-07-16). + +Do **not** run `pnpm install`. Nothing here needs a build. + +## Step 2 — Know the layout + +``` +hpeds/ +├── apps/ +│ ├── docs/ +│ │ ├── src/pages/ <- ALL documentation content, as .mdx +│ │ └── public/ <- ALL graphics (282 files, 32 MB) +│ └── design-tokens-manager/ +├── packages/ +│ ├── hpe-design-tokens/ +│ │ └── tokens/ <- raw token JSON (primitive/semantic/component) +│ ├── icons-svg/src/icons/ <- 452 raw SVG icons +│ ├── icons-grommet/ <- the same icons as React components +│ └── codemods/ +├── knowledge/ <- their own AI agent capability bundles +└── LICENSE <- Apache-2.0 +``` + +Content page counts, so you know when you have it all: + +```bash +find apps/docs/src/pages -name '*.mdx' | wc -l # 112 +for d in foundation design-tokens components templates learn; do + printf '%-16s %s\n' "$d" "$(find apps/docs/src/pages/$d -name '*.mdx' | wc -l)" +done +# foundation 20 +# design-tokens 11 +# components 49 (48 component pages + an all-components index) +# templates 27 +# learn 4 +``` + +Those five directories account for 111. The 112th is `whats-new.mdx` at the +page root. Widening the search to `apps/docs -type f \( -name '*.mdx' -o -name +'*.md' \)` returns 117, because it picks up repo READMEs outside the page tree. +Use the narrower count when checking coverage. + +## Step 3 — Get the full route list + +Useful as a checklist to confirm you covered everything. The site is a Next.js +export, so its build manifest lists every route. + +The build ID changes on every redeploy, so extract it rather than hardcoding +it. Save as `routes.sh`: + +```bash +#!/usr/bin/env bash +# Extract every route from the HPE Design System site (Next.js static export). +set -euo pipefail +UA="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0 Safari/537.36" +BASE="https://design-system.hpe.design" +BUILD_ID=$(curl -sS -A "$UA" "$BASE/" \ + | grep -oE '/_next/static/[A-Za-z0-9_-]{16,}/_buildManifest\.js' | head -1) +echo "buildManifest: $BUILD_ID" >&2 +curl -sS -A "$UA" "$BASE$BUILD_ID" \ + | tr ',' '\n' | grep -oE '"/[^"]*"' | tr -d '"' | sort -u +``` + +```bash +chmod +x routes.sh && ./routes.sh | wc -l # 123 +``` + +## Step 4 — Read the content + +The MDX files are prose plus JSX examples. Read the prose; the `` and +`` tags import React components from +`apps/docs/src/examples/` and can be ignored unless you need a rendered figure. + +Priority order, highest value first: + +| File | Why | +| --- | --- | +| `foundation/voice-and-tone.mdx` | 55 KB, the largest doc on the site. UI copy rules | +| `foundation/accessibility.mdx` | 18 KB. WCAG level, responsibility split table | +| `foundation/date-and-time.mdx` | 15 KB | +| `foundation/typography.mdx` | Font CDN URLs, heading rules | +| `foundation/color.mdx` | The eight color families and their jobs | +| `foundation/our-brand.mdx` | Logo and Element placement rules | +| `foundation/distinctive-brand-assets.mdx` | GreenLake badge status | +| `design-tokens/overview.mdx` | The three-tier token model | +| `design-tokens/versioning.mdx` | Version-to-theme map, migration paths | +| `foundation/philosophy-and-principles.mdx` | The three pillars, four principles | + +Sort the rest by size to prioritize: + +```bash +wc -c apps/docs/src/pages/foundation/*.mdx apps/docs/src/pages/design-tokens/*.mdx | sort -n +``` + +Raw single-file access without cloning, if you only want one page: + +``` +https://raw.githubusercontent.com/grommet/hpe-design-system/master/apps/docs/src/pages/foundation/color.mdx +``` + +## Step 5 — Resolve design tokens to real values + +This is the part worth automating, and the part most likely to be got wrong. + +**Token JSON does not contain values.** It contains references. A semantic token +points at a primitive, which may point at another primitive. Reading +`color.light.json` directly gives you `{base.color.grey.50}`, not `#f7f7f7`. + +Two more traps: + +1. Semantic tokens carry a `.REST` suffix on the leaf that references often + omit, so a naive lookup misses. +2. There is a `deprecated.*` namespace holding superseded values. A stale + reference resolves to a visibly different color: + `deprecated.base.color.green.400` is `#17eba0` where the live + `base.color.green.400` is `#00e0af`. + +Save as `resolve-tokens.py`: + +```python +#!/usr/bin/env python3 +"""Resolve HPE design tokens to concrete values. + +Usage: resolve-tokens.py [filter-substring] +Tokens are stored as {references}; this follows them to real hex/number values. +""" +import json, sys, os + +root = sys.argv[1] +needle = sys.argv[2] if len(sys.argv) > 2 else '' +T = os.path.join(root, 'packages/hpe-design-tokens/tokens') + +def flat(o, p=''): + out = {} + if isinstance(o, dict): + if '$value' in o: + return {p: o['$value']} + for k, v in o.items(): + out.update(flat(v, f'{p}.{k}' if p else k)) + return out + +prim = flat(json.load(open(f'{T}/primitive/primitives.default.json'))) +light = flat(json.load(open(f'{T}/semantic/color.light.json'))) +dark = flat(json.load(open(f'{T}/semantic/color.dark.json'))) + +def resolve(v, tbl, depth=0): + while isinstance(v, str) and v.startswith('{') and depth < 10: + k = v.strip('{}') + v = prim.get(k, tbl.get(k + '.REST', tbl.get(k))) + depth += 1 + return v + +for k in sorted(light): + if needle and needle not in k: + continue + print(f'{k:52} light={str(resolve(light[k], light)):12} dark={resolve(dark.get(k), dark)}') +``` + +Run it: + +```bash +python3 resolve-tokens.py hpeds 'text.' +# color.text.default.REST light=#3e4550 dark=#e6e8e9 +# color.text.heading...REST light=#292d3a dark=#ffffff +# color.text.critical...REST light=#cc1f1a dark=#ff7b7b + +python3 resolve-tokens.py hpeds 'background.' +python3 resolve-tokens.py hpeds '' # everything, 108 semantic color tokens +``` + +### The units gotcha + +Dimension primitives are stored as **unitless numbers**. `base.dimension.400` +is the number `16`, not `"16px"`. Units are applied at build time by +`packages/hpe-design-tokens/src/transforms/numberToDimension.ts`, and not +uniformly: + +- `fontSize` and `lineHeight` are divided by 16 and emitted as **`rem`** +- everything else (spacing, radius, padding, width, height, border width, + breakpoints) is emitted as **`px`** + +If you report a raw number as a pixel value for a font size, you will be wrong +by a factor of 16. + +## Step 6 — Pull the assets + +### Icons (452 SVGs, 1.9 MB) + +```bash +mkdir -p out/icons +cp hpeds/packages/icons-svg/src/icons/*.svg out/icons/ +cp hpeds/packages/icons-svg/LICENSE hpeds/packages/icons-svg/COPYRIGHT.md out/icons/ +ls out/icons/*.svg | wc -l # 452 +``` + +Properties, verified: + +```bash +grep -ho 'viewBox="[^"]*"' out/icons/*.svg | sort | uniq -c | sort -rn +# 448 viewBox="0 0 24 24" +# 2 viewBox="0 0 24 25" (catalog.svg, chat.svg) +# 1 viewBox="0 0 48 24" (element.svg) +# 1 viewBox="0 0 24 26" (chat-conversation.svg) + +grep -l 'currentColor' out/icons/*.svg | wc -l # 451 of 452 +grep -ho 'fill="#[0-9A-Fa-f]*"' out/icons/*.svg | sort | uniq -c +# 1 fill="#01A982" (element.svg only) +``` + +**The HPE Element is `icons/element.svg`, not a logo file.** It is the one icon +with a hardcoded color, because the brand green must not inherit from its +container. + +### Brand marks + +```bash +mkdir -p out/brand +cp hpeds/apps/docs/public/HPE_logo_full-clr_{pos,rev}_rgb.svg out/brand/ +cp hpeds/apps/docs/public/static/images/{hpe-logo,hpe-logo-invert,aruba-logo}.svg out/brand/ +``` + +### All documentation graphics (282 files, 32 MB) + +```bash +mkdir -p out/site-images +cp -r hpeds/apps/docs/public/. out/site-images/ +find out/site-images -type f | wc -l # 282 +``` + +Two things to know before you commit 32 MB: + +- **About 14 MB is Unsplash stock photography** in + `learnImages/grid-fundamentals-part-1/`: four JPGs between 2.5 and 4.9 MB + used as filler in a Grommet grid tutorial. No HPE guidance in them. Drop that + one folder and you reclaim nearly half the total. +- **`logos/` holds partner logos, not HPE marks** (Apache, Dataiku, Dremio, H2O, + SingleStore, StreamSets and others). Third-party trademarks, not covered by + this repo's Apache-2.0 license. Do not mix them into a brand folder. + +## Step 7 — Verify before you trust it + +Do not skip this. Several claims that look obvious are wrong. + +**Verify color claims programmatically** rather than reading them off a page. +Every color value in this folder's docs was checked by resolving the token +reference chain and diffing against the written claim. Three examples that +catch people out: + +- **HPE green `#01a982` is `color.decorative.brand`, not the primary action + color.** Primary interactive surfaces use `#068667` in light mode and + `#05cc93` in dark. Calling a button "HPE green" and reaching for `#01a982` + produces the wrong button. +- `base.color.green.400` and `base.color.green.500` are **both** `#00e0af`. + That looks like a bug in your parser. It is not; the source really has both. +- `color.background.front` is `#ffffff` in light mode and `#292d3a` in dark, + while `color.text.strong` is `#292d3a` in light. The same hex serves opposite + roles across modes. Do not deduplicate by value. + +**Check the docs against themselves.** The accessibility page cites **WCAG 2.2** +at the top and **WCAG 2.1** in its government-standards section. The conformance +level is consistent (**A and AA required**, per: "The guidelines identified as +level A and AA are the required design elements for all applications") but the +version reference is not. Record the discrepancy rather than picking one +silently. + +**Do not infer from filenames.** The repo has a `knowledge/capabilities/ +alignment-audit/` entry that sounds like a product compliance audit. Reading it +shows a **planned stub** scoped to auditing the design system's own docs and +tokens. Only `docs-refactor` is marked active. Open the file. + +## Step 8 — Currency + +Two traps when judging how current something is: + +- **The site's "What's new" page is stale.** Its most recent entry is April + 2023. It is not a changelog. +- Use these instead: + - `packages/hpe-design-tokens/CHANGELOG.md` + - GitHub releases on `grommet/hpe-design-system` + - `apps/docs/src/pages/design-tokens/versioning.mdx` for the version-to-theme map + +As of 2026-07-30: `hpe-design-tokens` **2.2.3**, `@hpe-design/icons-grommet` +**1.2.0**, `@hpe-design/icons-svg` **0.2.0**. Current theme generation is +**v2-Landmark** (October 2025 onward), paired with `grommet-theme-hpe` **8.x**. + +## Licensing, and the one thing to be careful about + +The repo is **Apache-2.0**, "Copyright 2025 Hewlett Packard Enterprise +Development LP." Copying the content and assets into an internal knowledge repo +is fine, with attribution. + +**An open-source copyright license grants no trademark rights.** The HPE logo +and the Element are HPE trademarks. Their use is governed by the +[HPE Terms of Use](https://www.hpe.com/us/en/about/legal/terms-of-use.html), +with authoritative files and usage rules on +[Brand Central](https://brandcentral.hpe.com/home) (HPE login required). + +Practical consequence: a vendored logo is fine for reading and internal +reference, but pull the current file from Brand Central for anything that ships +or reaches a customer. A vendored mark goes stale silently, and the pending +HPE GreenLake rebrand is exactly the event that would make a copy wrong. + +Also worth flagging to whoever consumes your mirror: **Brand Central and the +Design System deliberately disagree on color.** The Design System says so +directly and instructs product teams to prefer its palette for app and web +work. Brand Central governs logos, print, and marketing. + +## Recommended output shape + +What this folder settled on, if it is useful as a template: + +``` +hpe-branding/ +├── README.md index, provenance, currency traps +├── HOWTO-mirror-the-design-system.md this file +├── 01-what-it-is.md scope, packages, authority model +├── 02-brand-foundations.md logo rules, resolved hex tables, spacing px +├── 03-design-tokens.md three tiers, version map, units +├── 04-voice-and-tone.md UI copy rules, term list +├── 05-accessibility.md conformance level, responsibility split +├── 06-components-templates.md 48 components, 27 templates +├── 07-adoption-and-compliance.md adoption paths, review checklist +└── assets/ + ├── icons/ 452 SVGs + LICENSE + ├── brand/ 5 word-marks + └── site-images/ 282 documentation graphics +``` + +The judgment call worth repeating: **write down the resolved values, not just +links to the site.** The whole reason this is work is that the site cannot be +read without a browser. A mirror that only links back to it solves nothing. + +## Quick reference + +| Thing | Where | +| --- | --- | +| Docs site | `https://design-system.hpe.design` (browser only) | +| Source repo | `https://github.com/grommet/hpe-design-system` (Apache-2.0) | +| MDX content | `apps/docs/src/pages/**/*.mdx` | +| Graphics | `apps/docs/public/` | +| Raw icons | `packages/icons-svg/src/icons/` | +| Token JSON | `packages/hpe-design-tokens/tokens/` | +| Grommet theme | `https://github.com/grommet/grommet-theme-hpe` | +| Component props | `https://v2.grommet.io/?theme=hpe` | +| Icon Storybook | `https://hpe-design-icons-grommet.netlify.app/` | +| Brand Central | `https://brandcentral.hpe.com/home` (HPE login) | +| Slack | `#hpe-design-system` on `grommet.slack.com` and HPE enterprise Slack | diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1c3e60f --- /dev/null +++ b/LICENSE @@ -0,0 +1,176 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS diff --git a/README.md b/README.md new file mode 100644 index 0000000..5db74d0 --- /dev/null +++ b/README.md @@ -0,0 +1,113 @@ +# hpe-branding + +A readable mirror of the **HPE Design System**, HPE's brand standard for +software user interfaces: what an HPE product UI must look like, how its text +must read, and what accessibility it must meet. + +Canonical source: `https://design-system.hpe.design` +Upstream repo: `https://github.com/grommet/hpe-design-system` (Apache-2.0) + +## Why this exists + +The official site is a Next.js static export that renders entirely in the +browser. Fetch a page and you get a 1.5 KB empty shell: + +```bash +curl -s https://design-system.hpe.design/foundation/color | wc -c # 1540 +``` + +There is no sitemap and no robots.txt. That makes the guidance hard to grep, +hard to diff, and impossible to feed to a coding agent without a browser. + +This repo is the same material in plain Markdown, with the values resolved. +Every color here is a real hex code, not a token reference. Every spacing step +is a real pixel value. The icons and graphics are checked in. + +## Contents + +| Path | What it covers | +| --- | --- | +| [`01-what-it-is.md`](01-what-it-is.md) | Scope, published packages, how it ships, Brand Central vs Design System authority | +| [`02-brand-foundations.md`](02-brand-foundations.md) | Logo and Element placement, resolved color tables, HPE Graphik, the spacing scale, icon rules | +| [`03-design-tokens.md`](03-design-tokens.md) | The three token tiers, naming, the version map, how to consume them | +| [`04-voice-and-tone.md`](04-voice-and-tone.md) | UI string rules: capitalization, acronyms, banned phrasings, the term list | +| [`05-accessibility.md`](05-accessibility.md) | Conformance level, the responsibility split, testing tools | +| [`06-components-templates.md`](06-components-templates.md) | The 48-component and 27-template inventory, and what each layer is for | +| [`07-adoption-and-compliance.md`](07-adoption-and-compliance.md) | Three adoption paths, a review checklist, what is worth arguing about | +| [`HOWTO-mirror-the-design-system.md`](HOWTO-mirror-the-design-system.md) | **Runbook to rebuild this repo from scratch.** Verified commands and two scripts | +| [`assets/icons/`](assets/icons/) | All 452 SVG icons, the complete HPE set | +| [`assets/brand/`](assets/brand/) | HPE and HPE Aruba Networking word-marks | +| [`assets/site-images/`](assets/site-images/) | All 282 documentation graphics | + +New to this? Read `01`, then `02`. If you are about to build or review a UI, +skip to the checklist in `07`. + +To regenerate this against a newer upstream, the runbook is the whole +procedure, including the two scripts that do the awkward parts. + +## Things that surprise people + +- **HPE green `#01a982` is not the button color.** It is + `color.decorative.brand`. Primary interactive surfaces use `#068667` in light + mode and `#05cc93` in dark. Reaching for `#01a982` on a button produces the + wrong button. +- **The Element is an icon, not a logo file.** It is + [`assets/icons/element.svg`](assets/icons/element.svg), the only icon in the + set with a hardcoded color, because the brand green must not inherit. +- **Brand Central and the Design System disagree on color, deliberately.** The + Design System extends brand color for digital product use and instructs + product teams to prefer its palette for app and web work. Brand Central + governs logos, print, and marketing. +- **The HPE GreenLake badge is retired.** It must not be added to new material, + pending a GreenLake rebrand. +- **The upstream "What's new" page is stale.** Its most recent entry is April + 2023. It is not a changelog. Use the GitHub releases and the + `hpe-design-tokens` changelog instead. +- **Token JSON holds no values.** It holds references. Reading + `color.light.json` directly gives you `{base.color.grey.50}`, not `#f7f7f7`. + +## Provenance + +Content read from `grommet/hpe-design-system` at commit **`567c4d5`** +(2026-07-16), mirrored **2026-07-30**. + +Versions current at that date: `hpe-design-tokens` **2.2.3**, +`@hpe-design/icons-grommet` **1.2.0**, `@hpe-design/icons-svg` **0.2.0**. +Theme generation **v2-Landmark** (October 2025 onward), paired with +`grommet-theme-hpe` **8.x**. + +This is a **point-in-time snapshot and it will drift.** For anything that +ships, check upstream. The runbook exists so refreshing is cheap. + +Colors were not transcribed by hand. Because token JSON stores references, every +color in these docs was produced by resolving the reference chain with the +script in the runbook, then diffed against the written claim. + +## License and trademark + +Upstream is **Apache-2.0**, "Copyright 2025 Hewlett Packard Enterprise +Development LP." The license text ships with the icons at +[`assets/icons/LICENSE`](assets/icons/LICENSE). This mirror is redistributed +under the same terms. + +**An open-source copyright license grants no trademark rights.** The HPE logo +and the Element are HPE trademarks. Their use is governed by the +[HPE Terms of Use](https://www.hpe.com/us/en/about/legal/terms-of-use.html), +with authoritative files and usage rules on +[Brand Central](https://brandcentral.hpe.com/home) (HPE login required). + +Treat `assets/brand/` as a reference copy for reading. For anything that ships +or reaches a customer, pull the current file from Brand Central. A vendored +mark goes stale silently, and the pending GreenLake rebrand is exactly the +event that would make a copy wrong. + +`assets/site-images/logos/` holds **third-party partner logos** (Apache, +Dataiku, Dremio, H2O, SingleStore, StreamSets and others). Those marks belong +to their owners and are not covered by the Apache-2.0 license above. + +## Not affiliated + +An unofficial mirror kept for reference. Not published by, or endorsed by, the +HPE Design System team. Upstream is the authority: open issues against +[`grommet/hpe-design-system`](https://github.com/grommet/hpe-design-system), +not here. diff --git a/assets/README.md b/assets/README.md new file mode 100644 index 0000000..ccaa1c2 --- /dev/null +++ b/assets/README.md @@ -0,0 +1,187 @@ +# hpe-branding/assets — vendored HPE assets + +Copies of the icon set, brand marks, and documentation graphics from +`github.com/grommet/hpe-design-system`, taken at commit `567c4d5` (2026-07-16) +on 2026-07-30. Here so the marks, icons, and reference images are available +without a build step, an npm install, or loading a JavaScript site. + +| Folder | Contents | Size | +| --- | --- | --- | +| `icons/` | 452 SVG icons, the full HPE set | 1.9 MB | +| `brand/` | 5 HPE and Aruba word-marks | 34 KB | +| `site-images/` | 282 documentation graphics, mirrored from the docs site | 32 MB | + +## License and trademark + +The code and icons are **Apache-2.0**, "Copyright 2025 Hewlett Packard +Enterprise Development LP." The license text is in `icons/LICENSE`. + +The license is not the whole story for the brand marks. **An open-source +copyright license does not grant trademark rights.** The HPE logo and the +Element are HPE trademarks, and their use is governed by the +[HPE Terms of Use](https://www.hpe.com/us/en/about/legal/terms-of-use.html) +with the authoritative files and usage rules on +[Brand Central](https://brandcentral.hpe.com/home). + +Treat `brand/` as a convenience copy for reading and internal reference. For +anything that ships or goes to a customer, pull the current file from Brand +Central. A vendored logo goes stale silently, and the GreenLake rebrand noted +in `../02-brand-foundations.md` is exactly the kind of event that would make +this copy wrong. + +## brand/ + +| File | What it is | +| --- | --- | +| `HPE_logo_full-clr_pos_rgb.svg` | HPE word-mark, positive (light backgrounds) | +| `HPE_logo_full-clr_rev_rgb.svg` | HPE word-mark, reversed (dark backgrounds) | +| `hpe-logo.svg` | Site header variant of the word-mark | +| `hpe-logo-invert.svg` | Site header variant, inverted | +| `aruba-logo.svg` | HPE Aruba Networking word-mark | + +The **Element** (the green rectangle symbol) is not here. It ships as part of +the icon set: `icons/element.svg`. It is the only icon in the set with a +hardcoded color, `#01A982`, because the brand green is not allowed to inherit. +It is also one of the few icons that is not square, at 48x24. + +Placement rules for the Element and the logos are in +`../02-brand-foundations.md`. + +## icons/ + +452 SVGs, flat directory, one file per icon, named semantically. + +Properties worth knowing before using them: + +- **448 of 452 are 24x24.** The exceptions are `element.svg` (48x24), + `catalog.svg` and `chat.svg` (24x25), and `chat-conversation.svg` (24x26). + If you are laying out an icon grid, those four will not align. +- **451 of 452 use `fill="currentColor"`**, so they take the color of their + container with no edit. `element.svg` is the one exception. +- No ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/site-images/whatis/base.svg b/assets/site-images/whatis/base.svg new file mode 100644 index 0000000..fa3eaa0 --- /dev/null +++ b/assets/site-images/whatis/base.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/site-images/whatis/combining.svg b/assets/site-images/whatis/combining.svg new file mode 100644 index 0000000..0c72b99 --- /dev/null +++ b/assets/site-images/whatis/combining.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/site-images/whatis/tailor.svg b/assets/site-images/whatis/tailor.svg new file mode 100644 index 0000000..6dde8c6 --- /dev/null +++ b/assets/site-images/whatis/tailor.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/assets/site-images/whatis/tools.svg b/assets/site-images/whatis/tools.svg new file mode 100644 index 0000000..6d87c08 --- /dev/null +++ b/assets/site-images/whatis/tools.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/assets/site-images/windows.svg b/assets/site-images/windows.svg new file mode 100644 index 0000000..08a3f28 --- /dev/null +++ b/assets/site-images/windows.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/site-images/woman-glc.jpeg b/assets/site-images/woman-glc.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..970471a419c8439a45919e90815885737eda0917 GIT binary patch literal 65062 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 j5!@3n4yc{V1|=>cYKTeS`N?s=nY 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 Gum1;7#&rS! literal 0 HcmV?d00001