@cyberskill/design 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DESIGN.md +267 -0
- package/README.md +316 -0
- package/SKILL.md +64 -0
- package/VERSION +1 -0
- package/_ds_bundle.js +5377 -0
- package/_ds_manifest.json +1 -0
- package/_esm/cs.mjs +137 -0
- package/assets/aurora-gold.jpg +0 -0
- package/assets/aurora-hoa.png +0 -0
- package/assets/aurora-kim.png +0 -0
- package/assets/aurora-moc.png +0 -0
- package/assets/aurora-thuy.png +0 -0
- package/assets/favicon.svg +1 -0
- package/assets/logo-mark.png +0 -0
- package/assets/logo-mark.svg +10 -0
- package/assets/lumi-poster.webp +0 -0
- package/assets/og-dashboard.png +0 -0
- package/base/a11y.css +57 -0
- package/base/ai.css +67 -0
- package/base/collections.css +53 -0
- package/base/components.css +212 -0
- package/base/controls.css +329 -0
- package/base/data.css +48 -0
- package/base/feedback.css +60 -0
- package/base/forms.css +32 -0
- package/base/glass.css +119 -0
- package/base/interaction.css +50 -0
- package/base/navigation.css +39 -0
- package/base/reset.css +17 -0
- package/base/responsive.css +128 -0
- package/base/shell.css +55 -0
- package/base/typography.css +14 -0
- package/components/_i18n/i18n.js +56 -0
- package/components/_i18n/strings.js +187 -0
- package/components/_utils/cx.js +4 -0
- package/components/ai/AIDisclosureBadge.d.ts +16 -0
- package/components/ai/AIDisclosureBadge.figma.tsx +12 -0
- package/components/ai/AIDisclosureBadge.jsx +39 -0
- package/components/ai/AIDisclosureBadge.prompt.md +9 -0
- package/components/ai/ChatMessage.d.ts +17 -0
- package/components/ai/ChatMessage.figma.tsx +12 -0
- package/components/ai/ChatMessage.jsx +22 -0
- package/components/ai/ChatMessage.prompt.md +8 -0
- package/components/ai/CitationList.d.ts +13 -0
- package/components/ai/CitationList.figma.tsx +12 -0
- package/components/ai/CitationList.jsx +22 -0
- package/components/ai/CitationList.prompt.md +5 -0
- package/components/ai/ConfidenceMeter.d.ts +17 -0
- package/components/ai/ConfidenceMeter.figma.tsx +12 -0
- package/components/ai/ConfidenceMeter.jsx +43 -0
- package/components/ai/ConfidenceMeter.prompt.md +6 -0
- package/components/ai/HumanReviewGate.d.ts +20 -0
- package/components/ai/HumanReviewGate.figma.tsx +12 -0
- package/components/ai/HumanReviewGate.jsx +37 -0
- package/components/ai/HumanReviewGate.prompt.md +13 -0
- package/components/ai/PromptInput.d.ts +21 -0
- package/components/ai/PromptInput.figma.tsx +12 -0
- package/components/ai/PromptInput.jsx +48 -0
- package/components/ai/PromptInput.prompt.md +5 -0
- package/components/ai/PromptSuggestions.d.ts +12 -0
- package/components/ai/PromptSuggestions.figma.tsx +12 -0
- package/components/ai/PromptSuggestions.jsx +20 -0
- package/components/ai/PromptSuggestions.prompt.md +5 -0
- package/components/ai/TypingIndicator.d.ts +9 -0
- package/components/ai/TypingIndicator.figma.tsx +12 -0
- package/components/ai/TypingIndicator.jsx +14 -0
- package/components/ai/TypingIndicator.prompt.md +5 -0
- package/components/ai/ai-conversation.card.html +49 -0
- package/components/ai/ai-lumi.card.html +39 -0
- package/components/ai/ai.card.html +43 -0
- package/components/brand/LumiAvatar.d.ts +14 -0
- package/components/brand/LumiAvatar.figma.tsx +12 -0
- package/components/brand/LumiAvatar.jsx +11 -0
- package/components/brand/LumiAvatar.prompt.md +5 -0
- package/components/brand/brand.card.html +37 -0
- package/components/button/Button.d.ts +24 -0
- package/components/button/Button.figma.tsx +31 -0
- package/components/button/Button.jsx +42 -0
- package/components/button/Button.prompt.md +12 -0
- package/components/button/ButtonGroup.d.ts +11 -0
- package/components/button/ButtonGroup.figma.tsx +12 -0
- package/components/button/ButtonGroup.jsx +7 -0
- package/components/button/ButtonGroup.prompt.md +8 -0
- package/components/button/FloatingActionButton.d.ts +15 -0
- package/components/button/FloatingActionButton.figma.tsx +12 -0
- package/components/button/FloatingActionButton.jsx +20 -0
- package/components/button/FloatingActionButton.prompt.md +6 -0
- package/components/button/buttons.card.html +52 -0
- package/components/data/Accordion.d.ts +14 -0
- package/components/data/Accordion.figma.tsx +12 -0
- package/components/data/Accordion.jsx +25 -0
- package/components/data/Accordion.prompt.md +5 -0
- package/components/data/Avatar.d.ts +18 -0
- package/components/data/Avatar.figma.tsx +12 -0
- package/components/data/Avatar.jsx +17 -0
- package/components/data/Avatar.prompt.md +6 -0
- package/components/data/Card.d.ts +23 -0
- package/components/data/Card.figma.tsx +12 -0
- package/components/data/Card.jsx +27 -0
- package/components/data/Card.prompt.md +9 -0
- package/components/data/Carousel.d.ts +13 -0
- package/components/data/Carousel.figma.tsx +12 -0
- package/components/data/Carousel.jsx +26 -0
- package/components/data/Carousel.prompt.md +5 -0
- package/components/data/Chart.d.ts +17 -0
- package/components/data/Chart.figma.tsx +12 -0
- package/components/data/Chart.jsx +52 -0
- package/components/data/Chart.prompt.md +5 -0
- package/components/data/CodeBlock.d.ts +12 -0
- package/components/data/CodeBlock.figma.tsx +12 -0
- package/components/data/CodeBlock.jsx +21 -0
- package/components/data/CodeBlock.prompt.md +5 -0
- package/components/data/Comment.d.ts +18 -0
- package/components/data/Comment.figma.tsx +12 -0
- package/components/data/Comment.jsx +24 -0
- package/components/data/Comment.prompt.md +7 -0
- package/components/data/DescriptionList.d.ts +10 -0
- package/components/data/DescriptionList.figma.tsx +12 -0
- package/components/data/DescriptionList.jsx +16 -0
- package/components/data/DescriptionList.prompt.md +5 -0
- package/components/data/Divider.d.ts +13 -0
- package/components/data/Divider.figma.tsx +12 -0
- package/components/data/Divider.jsx +11 -0
- package/components/data/Divider.prompt.md +6 -0
- package/components/data/Image.d.ts +18 -0
- package/components/data/Image.figma.tsx +12 -0
- package/components/data/Image.jsx +37 -0
- package/components/data/Image.prompt.md +5 -0
- package/components/data/Kbd.d.ts +8 -0
- package/components/data/Kbd.figma.tsx +12 -0
- package/components/data/Kbd.jsx +7 -0
- package/components/data/Kbd.prompt.md +5 -0
- package/components/data/List.d.ts +16 -0
- package/components/data/List.figma.tsx +12 -0
- package/components/data/List.jsx +24 -0
- package/components/data/List.prompt.md +7 -0
- package/components/data/Masonry.d.ts +13 -0
- package/components/data/Masonry.figma.tsx +12 -0
- package/components/data/Masonry.jsx +11 -0
- package/components/data/Masonry.prompt.md +5 -0
- package/components/data/QRCode.d.ts +12 -0
- package/components/data/QRCode.figma.tsx +12 -0
- package/components/data/QRCode.jsx +17 -0
- package/components/data/QRCode.prompt.md +5 -0
- package/components/data/Sortable.d.ts +10 -0
- package/components/data/Sortable.figma.tsx +12 -0
- package/components/data/Sortable.jsx +30 -0
- package/components/data/Sortable.prompt.md +5 -0
- package/components/data/Splitter.d.ts +16 -0
- package/components/data/Splitter.figma.tsx +12 -0
- package/components/data/Splitter.jsx +31 -0
- package/components/data/Splitter.prompt.md +5 -0
- package/components/data/Stat.d.ts +15 -0
- package/components/data/Stat.figma.tsx +12 -0
- package/components/data/Stat.jsx +19 -0
- package/components/data/Stat.prompt.md +5 -0
- package/components/data/Terminal.d.ts +13 -0
- package/components/data/Terminal.figma.tsx +12 -0
- package/components/data/Terminal.jsx +32 -0
- package/components/data/Terminal.prompt.md +5 -0
- package/components/data/Timeline.d.ts +17 -0
- package/components/data/Timeline.figma.tsx +12 -0
- package/components/data/Timeline.jsx +20 -0
- package/components/data/Timeline.prompt.md +8 -0
- package/components/data/Tooltip.d.ts +14 -0
- package/components/data/Tooltip.figma.tsx +12 -0
- package/components/data/Tooltip.jsx +12 -0
- package/components/data/Tooltip.prompt.md +5 -0
- package/components/data/Tree.d.ts +13 -0
- package/components/data/Tree.figma.tsx +12 -0
- package/components/data/Tree.jsx +23 -0
- package/components/data/Tree.prompt.md +5 -0
- package/components/data/Watermark.d.ts +15 -0
- package/components/data/Watermark.figma.tsx +12 -0
- package/components/data/Watermark.jsx +15 -0
- package/components/data/Watermark.prompt.md +5 -0
- package/components/data/collections.card.html +52 -0
- package/components/data/data.card.html +50 -0
- package/components/data/qr-encode.js +80 -0
- package/components/datatable/DataGrid.d.ts +42 -0
- package/components/datatable/DataGrid.figma.tsx +12 -0
- package/components/datatable/DataGrid.jsx +149 -0
- package/components/datatable/DataGrid.prompt.md +12 -0
- package/components/datatable/DataTable.d.ts +25 -0
- package/components/datatable/DataTable.figma.tsx +12 -0
- package/components/datatable/DataTable.jsx +42 -0
- package/components/datatable/DataTable.prompt.md +15 -0
- package/components/datatable/TreeTable.d.ts +14 -0
- package/components/datatable/TreeTable.figma.tsx +12 -0
- package/components/datatable/TreeTable.jsx +47 -0
- package/components/datatable/TreeTable.prompt.md +6 -0
- package/components/datatable/datatable.card.html +51 -0
- package/components/dialog/Dialog.d.ts +22 -0
- package/components/dialog/Dialog.figma.tsx +12 -0
- package/components/dialog/Dialog.jsx +99 -0
- package/components/dialog/Dialog.prompt.md +17 -0
- package/components/dialog/dialog.card.html +46 -0
- package/components/feedback/Alert.d.ts +16 -0
- package/components/feedback/Alert.figma.tsx +17 -0
- package/components/feedback/Alert.jsx +29 -0
- package/components/feedback/Alert.prompt.md +6 -0
- package/components/feedback/Badge.d.ts +15 -0
- package/components/feedback/Badge.figma.tsx +12 -0
- package/components/feedback/Badge.jsx +12 -0
- package/components/feedback/Badge.prompt.md +6 -0
- package/components/feedback/EmptyState.d.ts +13 -0
- package/components/feedback/EmptyState.figma.tsx +12 -0
- package/components/feedback/EmptyState.jsx +16 -0
- package/components/feedback/EmptyState.prompt.md +7 -0
- package/components/feedback/ProgressBar.d.ts +15 -0
- package/components/feedback/ProgressBar.figma.tsx +12 -0
- package/components/feedback/ProgressBar.jsx +13 -0
- package/components/feedback/ProgressBar.prompt.md +5 -0
- package/components/feedback/Result.d.ts +15 -0
- package/components/feedback/Result.figma.tsx +12 -0
- package/components/feedback/Result.jsx +24 -0
- package/components/feedback/Result.prompt.md +7 -0
- package/components/feedback/Skeleton.d.ts +18 -0
- package/components/feedback/Skeleton.figma.tsx +12 -0
- package/components/feedback/Skeleton.jsx +22 -0
- package/components/feedback/Skeleton.prompt.md +6 -0
- package/components/feedback/Spinner.d.ts +11 -0
- package/components/feedback/Spinner.figma.tsx +12 -0
- package/components/feedback/Spinner.jsx +10 -0
- package/components/feedback/Spinner.prompt.md +5 -0
- package/components/feedback/StatusIndicator.d.ts +11 -0
- package/components/feedback/StatusIndicator.figma.tsx +12 -0
- package/components/feedback/StatusIndicator.jsx +12 -0
- package/components/feedback/StatusIndicator.prompt.md +5 -0
- package/components/feedback/Tag.d.ts +14 -0
- package/components/feedback/Tag.figma.tsx +12 -0
- package/components/feedback/Tag.jsx +19 -0
- package/components/feedback/Tag.prompt.md +6 -0
- package/components/feedback/Toast.d.ts +19 -0
- package/components/feedback/Toast.figma.tsx +12 -0
- package/components/feedback/Toast.jsx +30 -0
- package/components/feedback/Toast.prompt.md +7 -0
- package/components/feedback/feedback-2.card.html +43 -0
- package/components/feedback/feedback.card.html +50 -0
- package/components/forms/Calendar.d.ts +10 -0
- package/components/forms/Calendar.figma.tsx +12 -0
- package/components/forms/Calendar.jsx +43 -0
- package/components/forms/Calendar.prompt.md +5 -0
- package/components/forms/Cascader.d.ts +17 -0
- package/components/forms/Cascader.figma.tsx +12 -0
- package/components/forms/Cascader.jsx +58 -0
- package/components/forms/Cascader.prompt.md +5 -0
- package/components/forms/Checkbox.d.ts +13 -0
- package/components/forms/Checkbox.figma.tsx +12 -0
- package/components/forms/Checkbox.jsx +16 -0
- package/components/forms/Checkbox.prompt.md +6 -0
- package/components/forms/ColorPicker.d.ts +12 -0
- package/components/forms/ColorPicker.figma.tsx +12 -0
- package/components/forms/ColorPicker.jsx +44 -0
- package/components/forms/ColorPicker.prompt.md +5 -0
- package/components/forms/Combobox.d.ts +17 -0
- package/components/forms/Combobox.figma.tsx +12 -0
- package/components/forms/Combobox.jsx +49 -0
- package/components/forms/Combobox.prompt.md +6 -0
- package/components/forms/DatePicker.d.ts +15 -0
- package/components/forms/DatePicker.figma.tsx +12 -0
- package/components/forms/DatePicker.jsx +35 -0
- package/components/forms/DatePicker.prompt.md +5 -0
- package/components/forms/Editor.d.ts +12 -0
- package/components/forms/Editor.figma.tsx +12 -0
- package/components/forms/Editor.jsx +26 -0
- package/components/forms/Editor.prompt.md +5 -0
- package/components/forms/FileUpload.d.ts +14 -0
- package/components/forms/FileUpload.figma.tsx +12 -0
- package/components/forms/FileUpload.jsx +29 -0
- package/components/forms/FileUpload.prompt.md +5 -0
- package/components/forms/Form.d.ts +87 -0
- package/components/forms/Form.figma.tsx +12 -0
- package/components/forms/Form.jsx +316 -0
- package/components/forms/Form.prompt.md +46 -0
- package/components/forms/InlineEdit.d.ts +13 -0
- package/components/forms/InlineEdit.figma.tsx +12 -0
- package/components/forms/InlineEdit.jsx +27 -0
- package/components/forms/InlineEdit.prompt.md +5 -0
- package/components/forms/InputGroup.d.ts +20 -0
- package/components/forms/InputGroup.figma.tsx +12 -0
- package/components/forms/InputGroup.jsx +25 -0
- package/components/forms/InputGroup.prompt.md +6 -0
- package/components/forms/InputOTP.d.ts +16 -0
- package/components/forms/InputOTP.figma.tsx +12 -0
- package/components/forms/InputOTP.jsx +47 -0
- package/components/forms/InputOTP.prompt.md +5 -0
- package/components/forms/Mentions.d.ts +13 -0
- package/components/forms/Mentions.figma.tsx +12 -0
- package/components/forms/Mentions.jsx +31 -0
- package/components/forms/Mentions.prompt.md +5 -0
- package/components/forms/NumberField.d.ts +14 -0
- package/components/forms/NumberField.figma.tsx +12 -0
- package/components/forms/NumberField.jsx +21 -0
- package/components/forms/NumberField.prompt.md +5 -0
- package/components/forms/RadioGroup.d.ts +24 -0
- package/components/forms/RadioGroup.figma.tsx +12 -0
- package/components/forms/RadioGroup.jsx +32 -0
- package/components/forms/RadioGroup.prompt.md +6 -0
- package/components/forms/Rating.d.ts +16 -0
- package/components/forms/Rating.figma.tsx +12 -0
- package/components/forms/Rating.jsx +22 -0
- package/components/forms/Rating.prompt.md +6 -0
- package/components/forms/SearchField.d.ts +11 -0
- package/components/forms/SearchField.figma.tsx +12 -0
- package/components/forms/SearchField.jsx +25 -0
- package/components/forms/SearchField.prompt.md +5 -0
- package/components/forms/SegmentedControl.d.ts +13 -0
- package/components/forms/SegmentedControl.figma.tsx +12 -0
- package/components/forms/SegmentedControl.jsx +31 -0
- package/components/forms/SegmentedControl.prompt.md +6 -0
- package/components/forms/Select.d.ts +19 -0
- package/components/forms/Select.figma.tsx +12 -0
- package/components/forms/Select.jsx +27 -0
- package/components/forms/Select.prompt.md +6 -0
- package/components/forms/Slider.d.ts +6 -0
- package/components/forms/Slider.figma.tsx +12 -0
- package/components/forms/Slider.jsx +8 -0
- package/components/forms/Slider.prompt.md +5 -0
- package/components/forms/Switch.d.ts +12 -0
- package/components/forms/Switch.figma.tsx +12 -0
- package/components/forms/Switch.jsx +14 -0
- package/components/forms/Switch.prompt.md +5 -0
- package/components/forms/TagInput.d.ts +16 -0
- package/components/forms/TagInput.figma.tsx +12 -0
- package/components/forms/TagInput.jsx +39 -0
- package/components/forms/TagInput.prompt.md +5 -0
- package/components/forms/Textarea.d.ts +14 -0
- package/components/forms/Textarea.figma.tsx +12 -0
- package/components/forms/Textarea.jsx +19 -0
- package/components/forms/Textarea.prompt.md +5 -0
- package/components/forms/TimePicker.d.ts +16 -0
- package/components/forms/TimePicker.figma.tsx +12 -0
- package/components/forms/TimePicker.jsx +22 -0
- package/components/forms/TimePicker.prompt.md +5 -0
- package/components/forms/Toggle.d.ts +16 -0
- package/components/forms/Toggle.figma.tsx +12 -0
- package/components/forms/Toggle.jsx +15 -0
- package/components/forms/Toggle.prompt.md +6 -0
- package/components/forms/Transfer.d.ts +14 -0
- package/components/forms/Transfer.figma.tsx +12 -0
- package/components/forms/Transfer.jsx +41 -0
- package/components/forms/Transfer.prompt.md +5 -0
- package/components/forms/TreeSelect.d.ts +15 -0
- package/components/forms/TreeSelect.figma.tsx +12 -0
- package/components/forms/TreeSelect.jsx +35 -0
- package/components/forms/TreeSelect.prompt.md +5 -0
- package/components/forms/forms-2.card.html +40 -0
- package/components/forms/forms.card.html +40 -0
- package/components/icon/Icon.d.ts +26 -0
- package/components/icon/Icon.figma.tsx +12 -0
- package/components/icon/Icon.jsx +74 -0
- package/components/icon/Icon.prompt.md +8 -0
- package/components/icon/icon.card.html +38 -0
- package/components/logo/Logo.d.ts +18 -0
- package/components/logo/Logo.figma.tsx +12 -0
- package/components/logo/Logo.jsx +25 -0
- package/components/logo/Logo.prompt.md +10 -0
- package/components/logo/logo-data.js +214 -0
- package/components/logo/logo.card.html +44 -0
- package/components/navigation/Anchor.d.ts +11 -0
- package/components/navigation/Anchor.figma.tsx +12 -0
- package/components/navigation/Anchor.jsx +25 -0
- package/components/navigation/Anchor.prompt.md +5 -0
- package/components/navigation/BackTop.d.ts +9 -0
- package/components/navigation/BackTop.figma.tsx +12 -0
- package/components/navigation/BackTop.jsx +23 -0
- package/components/navigation/BackTop.prompt.md +5 -0
- package/components/navigation/Breadcrumb.d.ts +14 -0
- package/components/navigation/Breadcrumb.figma.tsx +12 -0
- package/components/navigation/Breadcrumb.jsx +24 -0
- package/components/navigation/Breadcrumb.prompt.md +5 -0
- package/components/navigation/CommandPalette.d.ts +19 -0
- package/components/navigation/CommandPalette.figma.tsx +12 -0
- package/components/navigation/CommandPalette.jsx +48 -0
- package/components/navigation/CommandPalette.prompt.md +7 -0
- package/components/navigation/Dock.d.ts +6 -0
- package/components/navigation/Dock.figma.tsx +12 -0
- package/components/navigation/Dock.jsx +22 -0
- package/components/navigation/Dock.prompt.md +5 -0
- package/components/navigation/HotKeys.d.ts +13 -0
- package/components/navigation/HotKeys.figma.tsx +12 -0
- package/components/navigation/HotKeys.jsx +44 -0
- package/components/navigation/HotKeys.prompt.md +5 -0
- package/components/navigation/Link.d.ts +12 -0
- package/components/navigation/Link.figma.tsx +12 -0
- package/components/navigation/Link.jsx +13 -0
- package/components/navigation/Link.prompt.md +5 -0
- package/components/navigation/Menu.d.ts +23 -0
- package/components/navigation/Menu.figma.tsx +12 -0
- package/components/navigation/Menu.jsx +36 -0
- package/components/navigation/Menu.prompt.md +9 -0
- package/components/navigation/Menubar.d.ts +7 -0
- package/components/navigation/Menubar.figma.tsx +12 -0
- package/components/navigation/Menubar.jsx +48 -0
- package/components/navigation/Menubar.prompt.md +5 -0
- package/components/navigation/NavigationMenu.d.ts +7 -0
- package/components/navigation/NavigationMenu.figma.tsx +12 -0
- package/components/navigation/NavigationMenu.jsx +38 -0
- package/components/navigation/NavigationMenu.prompt.md +5 -0
- package/components/navigation/Pagination.d.ts +13 -0
- package/components/navigation/Pagination.figma.tsx +12 -0
- package/components/navigation/Pagination.jsx +32 -0
- package/components/navigation/Pagination.prompt.md +5 -0
- package/components/navigation/Sidebar.d.ts +20 -0
- package/components/navigation/Sidebar.figma.tsx +12 -0
- package/components/navigation/Sidebar.jsx +24 -0
- package/components/navigation/Sidebar.prompt.md +8 -0
- package/components/navigation/Steps.d.ts +13 -0
- package/components/navigation/Steps.figma.tsx +12 -0
- package/components/navigation/Steps.jsx +20 -0
- package/components/navigation/Steps.prompt.md +5 -0
- package/components/navigation/Tabs.d.ts +21 -0
- package/components/navigation/Tabs.figma.tsx +12 -0
- package/components/navigation/Tabs.jsx +41 -0
- package/components/navigation/Tabs.prompt.md +6 -0
- package/components/navigation/Toolbar.d.ts +16 -0
- package/components/navigation/Toolbar.figma.tsx +12 -0
- package/components/navigation/Toolbar.jsx +32 -0
- package/components/navigation/Toolbar.prompt.md +5 -0
- package/components/navigation/navigation.card.html +51 -0
- package/components/navigation/shell.card.html +52 -0
- package/components/overlays/ContextMenu.d.ts +10 -0
- package/components/overlays/ContextMenu.figma.tsx +12 -0
- package/components/overlays/ContextMenu.jsx +28 -0
- package/components/overlays/ContextMenu.prompt.md +7 -0
- package/components/overlays/Drawer.d.ts +18 -0
- package/components/overlays/Drawer.figma.tsx +12 -0
- package/components/overlays/Drawer.jsx +44 -0
- package/components/overlays/Drawer.prompt.md +8 -0
- package/components/overlays/HoverCard.d.ts +13 -0
- package/components/overlays/HoverCard.figma.tsx +12 -0
- package/components/overlays/HoverCard.jsx +17 -0
- package/components/overlays/HoverCard.prompt.md +5 -0
- package/components/overlays/Popconfirm.d.ts +18 -0
- package/components/overlays/Popconfirm.figma.tsx +12 -0
- package/components/overlays/Popconfirm.jsx +33 -0
- package/components/overlays/Popconfirm.prompt.md +6 -0
- package/components/overlays/Popover.d.ts +17 -0
- package/components/overlays/Popover.figma.tsx +12 -0
- package/components/overlays/Popover.jsx +24 -0
- package/components/overlays/Popover.prompt.md +7 -0
- package/components/overlays/Tour.d.ts +13 -0
- package/components/overlays/Tour.figma.tsx +12 -0
- package/components/overlays/Tour.jsx +46 -0
- package/components/overlays/Tour.prompt.md +5 -0
- package/components/overlays/overlays.card.html +50 -0
- package/components/textfield/TextField.d.ts +18 -0
- package/components/textfield/TextField.figma.tsx +14 -0
- package/components/textfield/TextField.jsx +44 -0
- package/components/textfield/TextField.prompt.md +11 -0
- package/components/textfield/textfield.card.html +34 -0
- package/docs/ci-cd.md +84 -0
- package/docs/consuming.md +109 -0
- package/docs/contrast-report.md +125 -0
- package/docs/conventions.md +114 -0
- package/docs/decisions.md +94 -0
- package/docs/deploy.md +110 -0
- package/docs/design-styles.md +25 -0
- package/docs/figma.md +119 -0
- package/docs/live-hub.md +58 -0
- package/docs/products.md +26 -0
- package/docs/quality-gates.md +94 -0
- package/docs/release-notes.md +31 -0
- package/docs/storybook.md +56 -0
- package/docs/sync.md +48 -0
- package/docs/template-schema-v2.md +36 -0
- package/docs/vi/ci-cd.md +84 -0
- package/docs/vi/consuming.md +109 -0
- package/docs/vi/contrast-report.md +125 -0
- package/docs/vi/conventions.md +114 -0
- package/docs/vi/decisions.md +94 -0
- package/docs/vi/deploy.md +110 -0
- package/docs/vi/design-styles.md +25 -0
- package/docs/vi/figma.md +119 -0
- package/docs/vi/live-hub.md +58 -0
- package/docs/vi/products.md +26 -0
- package/docs/vi/quality-gates.md +94 -0
- package/docs/vi/release-notes.md +31 -0
- package/docs/vi/storybook.md +56 -0
- package/docs/vi/sync.md +48 -0
- package/docs/vi/template-schema-v2.md +36 -0
- package/docs/viewer.html +230 -0
- package/fonts/bevietnampro-300-latin-ext.woff2 +0 -0
- package/fonts/bevietnampro-300-latin.woff2 +0 -0
- package/fonts/bevietnampro-300-vietnamese.woff2 +0 -0
- package/fonts/bevietnampro-400-latin-ext.woff2 +0 -0
- package/fonts/bevietnampro-400-latin.woff2 +0 -0
- package/fonts/bevietnampro-400-vietnamese.woff2 +0 -0
- package/fonts/bevietnampro-400i-latin-ext.woff2 +0 -0
- package/fonts/bevietnampro-400i-latin.woff2 +0 -0
- package/fonts/bevietnampro-400i-vietnamese.woff2 +0 -0
- package/fonts/bevietnampro-500-latin-ext.woff2 +0 -0
- package/fonts/bevietnampro-500-latin.woff2 +0 -0
- package/fonts/bevietnampro-500-vietnamese.woff2 +0 -0
- package/fonts/bevietnampro-600-latin-ext.woff2 +0 -0
- package/fonts/bevietnampro-600-latin.woff2 +0 -0
- package/fonts/bevietnampro-600-vietnamese.woff2 +0 -0
- package/fonts/bevietnampro-600i-latin-ext.woff2 +0 -0
- package/fonts/bevietnampro-600i-latin.woff2 +0 -0
- package/fonts/bevietnampro-600i-vietnamese.woff2 +0 -0
- package/fonts/bevietnampro-700-latin-ext.woff2 +0 -0
- package/fonts/bevietnampro-700-latin.woff2 +0 -0
- package/fonts/bevietnampro-700-vietnamese.woff2 +0 -0
- package/fonts/bevietnampro-800-latin-ext.woff2 +0 -0
- package/fonts/bevietnampro-800-latin.woff2 +0 -0
- package/fonts/bevietnampro-800-vietnamese.woff2 +0 -0
- package/fonts/jetbrainsmono-400-cyrillic-ext.woff2 +0 -0
- package/fonts/jetbrainsmono-400-cyrillic.woff2 +0 -0
- package/fonts/jetbrainsmono-400-greek.woff2 +0 -0
- package/fonts/jetbrainsmono-400-latin-ext.woff2 +0 -0
- package/fonts/jetbrainsmono-400-latin.woff2 +0 -0
- package/fonts/jetbrainsmono-400-vietnamese.woff2 +0 -0
- package/fonts/jetbrainsmono-500-cyrillic-ext.woff2 +0 -0
- package/fonts/jetbrainsmono-500-cyrillic.woff2 +0 -0
- package/fonts/jetbrainsmono-500-greek.woff2 +0 -0
- package/fonts/jetbrainsmono-500-latin-ext.woff2 +0 -0
- package/fonts/jetbrainsmono-500-latin.woff2 +0 -0
- package/fonts/jetbrainsmono-500-vietnamese.woff2 +0 -0
- package/fonts/jetbrainsmono-700-cyrillic-ext.woff2 +0 -0
- package/fonts/jetbrainsmono-700-cyrillic.woff2 +0 -0
- package/fonts/jetbrainsmono-700-greek.woff2 +0 -0
- package/fonts/jetbrainsmono-700-latin-ext.woff2 +0 -0
- package/fonts/jetbrainsmono-700-latin.woff2 +0 -0
- package/fonts/jetbrainsmono-700-vietnamese.woff2 +0 -0
- package/guidelines/atomic-view.html +497 -0
- package/guidelines/brand-iconography.html +51 -0
- package/guidelines/brand-imagery.html +23 -0
- package/guidelines/brand-interaction.html +24 -0
- package/guidelines/brand-voice.html +24 -0
- package/guidelines/colors-anchors.html +20 -0
- package/guidelines/colors-semantic.html +19 -0
- package/guidelines/colors-surfaces.html +19 -0
- package/guidelines/colors-text.html +20 -0
- package/guidelines/documents.html +43 -0
- package/guidelines/elements-components.html +27 -0
- package/guidelines/elements-concept.html +48 -0
- package/guidelines/elements-variants.html +49 -0
- package/guidelines/motion-interaction.html +29 -0
- package/guidelines/motion.html +53 -0
- package/guidelines/nav-model.cjs +113 -0
- package/guidelines/responsive-bilingual.html +75 -0
- package/guidelines/rtl-preview.html +115 -0
- package/guidelines/spacing-breakpoints.html +20 -0
- package/guidelines/spacing-radius.html +19 -0
- package/guidelines/spacing-scale.html +21 -0
- package/guidelines/surfaces-aurora.html +20 -0
- package/guidelines/surfaces-depth.html +27 -0
- package/guidelines/surfaces-glass.html +21 -0
- package/guidelines/surfaces-shadow.html +20 -0
- package/guidelines/type-families.html +25 -0
- package/guidelines/type-lineheight.html +16 -0
- package/guidelines/type-scale.html +21 -0
- package/guidelines/type-weights.html +20 -0
- package/llms.txt +70 -0
- package/package.json +88 -0
- package/styles.css +39 -0
- package/templates/_vendor/deck-stage.js +2584 -0
- package/templates/ai-cluster-demo.html +46 -0
- package/templates/app-shell/.thumbnail +0 -0
- package/templates/app-shell/AppShell.dc.html +80 -0
- package/templates/app-shell/content-schema.json +114 -0
- package/templates/app-shell/ds-base.js +23 -0
- package/templates/app-shell/support.js +1841 -0
- package/templates/article/.thumbnail +0 -0
- package/templates/article/Article.dc.html +67 -0
- package/templates/article/content-schema.json +80 -0
- package/templates/article/ds-base.js +23 -0
- package/templates/article/support.js +1841 -0
- package/templates/auth/.thumbnail +0 -0
- package/templates/auth/Auth.dc.html +72 -0
- package/templates/auth/content-schema.json +74 -0
- package/templates/auth/ds-base.js +23 -0
- package/templates/auth/support.js +1841 -0
- package/templates/bod-deck/.thumbnail +0 -0
- package/templates/bod-deck/BodDeck.dc.html +106 -0
- package/templates/bod-deck/content-schema.json +171 -0
- package/templates/bod-deck/ds-base.js +23 -0
- package/templates/bod-deck/support.js +1841 -0
- package/templates/bod-investor-update/.thumbnail +0 -0
- package/templates/bod-investor-update/BodInvestorUpdate.dc.html +81 -0
- package/templates/bod-investor-update/content-schema.json +105 -0
- package/templates/bod-investor-update/ds-base.js +23 -0
- package/templates/bod-investor-update/support.js +1841 -0
- package/templates/bod-memo/.thumbnail +0 -0
- package/templates/bod-memo/BodMemo.dc.html +87 -0
- package/templates/bod-memo/ds-base.js +23 -0
- package/templates/bod-memo/support.js +1841 -0
- package/templates/bod-minutes/.thumbnail +0 -0
- package/templates/bod-minutes/BodMinutes.dc.html +84 -0
- package/templates/bod-minutes/ds-base.js +23 -0
- package/templates/bod-minutes/support.js +1841 -0
- package/templates/bod-report/.thumbnail +0 -0
- package/templates/bod-report/BodReport.dc.html +106 -0
- package/templates/bod-report/content-schema.json +29 -0
- package/templates/bod-report/ds-base.js +23 -0
- package/templates/bod-report/support.js +1841 -0
- package/templates/bod-resolution/.thumbnail +0 -0
- package/templates/bod-resolution/BodResolution.dc.html +87 -0
- package/templates/bod-resolution/content-schema.json +123 -0
- package/templates/bod-resolution/ds-base.js +23 -0
- package/templates/bod-resolution/support.js +1841 -0
- package/templates/culture-event-invite/.thumbnail +0 -0
- package/templates/culture-event-invite/CultureEventInvite.dc.html +73 -0
- package/templates/culture-event-invite/ds-base.js +23 -0
- package/templates/culture-event-invite/support.js +1841 -0
- package/templates/dashboard/.thumbnail +0 -0
- package/templates/dashboard/Dashboard.dc.html +120 -0
- package/templates/dashboard/content-schema.json +97 -0
- package/templates/dashboard/ds-base.js +23 -0
- package/templates/dashboard/support.js +1841 -0
- package/templates/delivery-change-note/.thumbnail +0 -0
- package/templates/delivery-change-note/DeliveryChangeNote.dc.html +85 -0
- package/templates/delivery-change-note/content-schema.json +158 -0
- package/templates/delivery-change-note/ds-base.js +23 -0
- package/templates/delivery-change-note/support.js +1841 -0
- package/templates/delivery-kickoff/.thumbnail +0 -0
- package/templates/delivery-kickoff/DeliveryKickoff.dc.html +112 -0
- package/templates/delivery-kickoff/content-schema.json +223 -0
- package/templates/delivery-kickoff/ds-base.js +23 -0
- package/templates/delivery-kickoff/support.js +1841 -0
- package/templates/delivery-qbr-deck/.thumbnail +0 -0
- package/templates/delivery-qbr-deck/DeliveryQbrDeck.dc.html +118 -0
- package/templates/delivery-qbr-deck/content-schema.json +177 -0
- package/templates/delivery-qbr-deck/ds-base.js +23 -0
- package/templates/delivery-qbr-deck/support.js +1841 -0
- package/templates/delivery-runbook/.thumbnail +0 -0
- package/templates/delivery-runbook/DeliveryRunbook.dc.html +91 -0
- package/templates/delivery-runbook/content-schema.json +211 -0
- package/templates/delivery-runbook/ds-base.js +23 -0
- package/templates/delivery-runbook/support.js +1841 -0
- package/templates/delivery-status-email/.thumbnail +0 -0
- package/templates/delivery-status-email/DeliveryStatusEmail.dc.html +78 -0
- package/templates/delivery-status-email/ds-base.js +23 -0
- package/templates/delivery-status-email/support.js +1841 -0
- package/templates/doc-style-guide/.thumbnail +0 -0
- package/templates/doc-style-guide/DocStyleGuide.dc.html +148 -0
- package/templates/doc-style-guide/ds-base.js +23 -0
- package/templates/doc-style-guide/support.js +1841 -0
- package/templates/doc-suite-index/.thumbnail +0 -0
- package/templates/doc-suite-index/DocSuiteIndex.dc.html +201 -0
- package/templates/doc-suite-index/content-schema.json +12 -0
- package/templates/doc-suite-index/ds-base.js +23 -0
- package/templates/doc-suite-index/support.js +1841 -0
- package/templates/doc-templates/.thumbnail +0 -0
- package/templates/doc-templates/DocTemplates.dc.html +118 -0
- package/templates/doc-templates/ds-base.js +23 -0
- package/templates/doc-templates/support.js +1841 -0
- package/templates/email/.thumbnail +0 -0
- package/templates/email/Email-VN-standalone.html +59 -0
- package/templates/email/Email.dc.html +67 -0
- package/templates/email/ds-base.js +23 -0
- package/templates/email/support.js +1841 -0
- package/templates/email-safe/README.md +28 -0
- package/templates/email-safe/email-announcement.html +88 -0
- package/templates/email-safe/email-dunning.html +59 -0
- package/templates/email-safe/email-investor.html +88 -0
- package/templates/email-safe/email-launch.html +88 -0
- package/templates/email-safe/email-newsletter.html +62 -0
- package/templates/email-safe/email-status.html +88 -0
- package/templates/email-safe/email-transactional.html +88 -0
- package/templates/finance-dunning-email/.thumbnail +0 -0
- package/templates/finance-dunning-email/FinanceDunningEmail.dc.html +58 -0
- package/templates/finance-dunning-email/ds-base.js +23 -0
- package/templates/finance-dunning-email/support.js +1841 -0
- package/templates/finance-expense-report/.thumbnail +0 -0
- package/templates/finance-expense-report/FinanceExpenseReport.dc.html +82 -0
- package/templates/finance-expense-report/ds-base.js +23 -0
- package/templates/finance-expense-report/support.js +1841 -0
- package/templates/finance-invoice/.thumbnail +0 -0
- package/templates/finance-invoice/FinanceInvoice.dc.html +92 -0
- package/templates/finance-invoice/ds-base.js +23 -0
- package/templates/finance-invoice/support.js +1841 -0
- package/templates/finance-quote/.thumbnail +0 -0
- package/templates/finance-quote/FinanceQuote.dc.html +86 -0
- package/templates/finance-quote/ds-base.js +23 -0
- package/templates/finance-quote/support.js +1841 -0
- package/templates/hr-announcement/.thumbnail +0 -0
- package/templates/hr-announcement/HrAnnouncement.dc.html +64 -0
- package/templates/hr-announcement/ds-base.js +23 -0
- package/templates/hr-announcement/support.js +1841 -0
- package/templates/hr-interview-kit/.thumbnail +0 -0
- package/templates/hr-interview-kit/HrInterviewKit.dc.html +102 -0
- package/templates/hr-interview-kit/ds-base.js +23 -0
- package/templates/hr-interview-kit/support.js +1841 -0
- package/templates/hr-offboarding/.thumbnail +0 -0
- package/templates/hr-offboarding/HrOffboarding.dc.html +86 -0
- package/templates/hr-offboarding/ds-base.js +23 -0
- package/templates/hr-offboarding/support.js +1841 -0
- package/templates/hr-performance-review/.thumbnail +0 -0
- package/templates/hr-performance-review/HrPerformanceReview.dc.html +95 -0
- package/templates/hr-performance-review/ds-base.js +23 -0
- package/templates/hr-performance-review/support.js +1841 -0
- package/templates/hr-pip/.thumbnail +0 -0
- package/templates/hr-pip/HrPip.dc.html +73 -0
- package/templates/hr-pip/ds-base.js +23 -0
- package/templates/hr-pip/support.js +1841 -0
- package/templates/image-slots-demo.html +57 -0
- package/templates/kitchen-sink.html +127 -0
- package/templates/legal-msa/.thumbnail +0 -0
- package/templates/legal-msa/LegalMsa.dc.html +85 -0
- package/templates/legal-msa/ds-base.js +23 -0
- package/templates/legal-msa/support.js +1841 -0
- package/templates/legal-sow/.thumbnail +0 -0
- package/templates/legal-sow/LegalSow.dc.html +125 -0
- package/templates/legal-sow/ds-base.js +23 -0
- package/templates/legal-sow/support.js +1841 -0
- package/templates/marketing-campaign-brief/.thumbnail +0 -0
- package/templates/marketing-campaign-brief/MarketingCampaignBrief.dc.html +86 -0
- package/templates/marketing-campaign-brief/content-schema.json +139 -0
- package/templates/marketing-campaign-brief/ds-base.js +23 -0
- package/templates/marketing-campaign-brief/support.js +1841 -0
- package/templates/marketing-case-study/.thumbnail +0 -0
- package/templates/marketing-case-study/MarketingCaseStudy.dc.html +82 -0
- package/templates/marketing-case-study/content-schema.json +103 -0
- package/templates/marketing-case-study/ds-base.js +23 -0
- package/templates/marketing-case-study/support.js +1841 -0
- package/templates/marketing-launch/.thumbnail +0 -0
- package/templates/marketing-launch/MarketingLaunch.dc.html +84 -0
- package/templates/marketing-launch/ds-base.js +23 -0
- package/templates/marketing-launch/support.js +1841 -0
- package/templates/marketing-newsletter/.thumbnail +0 -0
- package/templates/marketing-newsletter/MarketingNewsletter.dc.html +109 -0
- package/templates/marketing-newsletter/ds-base.js +23 -0
- package/templates/marketing-newsletter/support.js +1841 -0
- package/templates/marketing-page/.thumbnail +0 -0
- package/templates/marketing-page/MarketingPage.dc.html +132 -0
- package/templates/marketing-page/content-schema.json +33 -0
- package/templates/marketing-page/ds-base.js +23 -0
- package/templates/marketing-page/support.js +1841 -0
- package/templates/marketing-press-release/.thumbnail +0 -0
- package/templates/marketing-press-release/MarketingPressRelease.dc.html +84 -0
- package/templates/marketing-press-release/content-schema.json +116 -0
- package/templates/marketing-press-release/ds-base.js +23 -0
- package/templates/marketing-press-release/support.js +1841 -0
- package/templates/marketing-social-kit/.thumbnail +0 -0
- package/templates/marketing-social-kit/MarketingSocialKit.dc.html +77 -0
- package/templates/marketing-social-kit/content-schema.json +54 -0
- package/templates/marketing-social-kit/ds-base.js +23 -0
- package/templates/marketing-social-kit/support.js +1841 -0
- package/templates/playground.html +79 -0
- package/templates/sales-one-pager/.thumbnail +0 -0
- package/templates/sales-one-pager/SalesOnePager.dc.html +103 -0
- package/templates/sales-one-pager/content-schema.json +73 -0
- package/templates/sales-one-pager/ds-base.js +23 -0
- package/templates/sales-one-pager/support.js +1841 -0
- package/templates/sales-proposal-deck/.thumbnail +0 -0
- package/templates/sales-proposal-deck/SalesProposalDeck.dc.html +159 -0
- package/templates/sales-proposal-deck/content-schema.json +273 -0
- package/templates/sales-proposal-deck/ds-base.js +23 -0
- package/templates/sales-proposal-deck/support.js +1841 -0
- package/templates/schema/content-schema.schema.json +31 -0
- package/templates/settings/.thumbnail +0 -0
- package/templates/settings/Settings.dc.html +86 -0
- package/templates/settings/content-schema.json +131 -0
- package/templates/settings/ds-base.js +23 -0
- package/templates/settings/support.js +1841 -0
- package/templates/slide-deck/.thumbnail +0 -0
- package/templates/slide-deck/SlideDeck.dc.html +86 -0
- package/templates/slide-deck/content-schema.json +23 -0
- package/templates/slide-deck/ds-base.js +23 -0
- package/templates/slide-deck/support.js +1841 -0
- package/templates/team-meeting-agenda/.thumbnail +0 -0
- package/templates/team-meeting-agenda/TeamMeetingAgenda.dc.html +93 -0
- package/templates/team-meeting-agenda/ds-base.js +23 -0
- package/templates/team-meeting-agenda/support.js +1841 -0
- package/templates/tech-incident-report/.thumbnail +0 -0
- package/templates/tech-incident-report/TechIncidentReport.dc.html +111 -0
- package/templates/tech-incident-report/content-schema.json +25 -0
- package/templates/tech-incident-report/ds-base.js +23 -0
- package/templates/tech-incident-report/support.js +1841 -0
- package/templates/tech-release-notes/.thumbnail +0 -0
- package/templates/tech-release-notes/TechReleaseNotes.dc.html +79 -0
- package/templates/tech-release-notes/ds-base.js +23 -0
- package/templates/tech-release-notes/support.js +1841 -0
- package/templates/tech-retro/.thumbnail +0 -0
- package/templates/tech-retro/TechRetro.dc.html +84 -0
- package/templates/tech-retro/ds-base.js +23 -0
- package/templates/tech-retro/support.js +1841 -0
- package/templates/tech-rfc/.thumbnail +0 -0
- package/templates/tech-rfc/TechRfc.dc.html +87 -0
- package/templates/tech-rfc/content-schema.json +115 -0
- package/templates/tech-rfc/ds-base.js +23 -0
- package/templates/tech-rfc/support.js +1841 -0
- package/templates/vn-appointment-transfer/.thumbnail +0 -0
- package/templates/vn-appointment-transfer/VnAppointmentTransfer.dc.html +101 -0
- package/templates/vn-appointment-transfer/ds-base.js +23 -0
- package/templates/vn-appointment-transfer/support.js +1841 -0
- package/templates/vn-certificate-of-employment/.thumbnail +0 -0
- package/templates/vn-certificate-of-employment/VnCertificateOfEmployment.dc.html +84 -0
- package/templates/vn-certificate-of-employment/ds-base.js +23 -0
- package/templates/vn-certificate-of-employment/support.js +1841 -0
- package/templates/vn-code-of-conduct/.thumbnail +0 -0
- package/templates/vn-code-of-conduct/VnCodeOfConduct.dc.html +105 -0
- package/templates/vn-code-of-conduct/ds-base.js +23 -0
- package/templates/vn-code-of-conduct/support.js +1841 -0
- package/templates/vn-compensation-regulation/.thumbnail +0 -0
- package/templates/vn-compensation-regulation/VnCompensationRegulation.dc.html +122 -0
- package/templates/vn-compensation-regulation/ds-base.js +23 -0
- package/templates/vn-compensation-regulation/support.js +1841 -0
- package/templates/vn-contract-amendment/.thumbnail +0 -0
- package/templates/vn-contract-amendment/VnContractAmendment.dc.html +107 -0
- package/templates/vn-contract-amendment/ds-base.js +23 -0
- package/templates/vn-contract-amendment/support.js +1841 -0
- package/templates/vn-contractor-agreement/.thumbnail +0 -0
- package/templates/vn-contractor-agreement/VnContractorAgreement.dc.html +120 -0
- package/templates/vn-contractor-agreement/ds-base.js +23 -0
- package/templates/vn-contractor-agreement/support.js +1841 -0
- package/templates/vn-data-protection-policy/.thumbnail +0 -0
- package/templates/vn-data-protection-policy/VnDataProtectionPolicy.dc.html +116 -0
- package/templates/vn-data-protection-policy/ds-base.js +23 -0
- package/templates/vn-data-protection-policy/support.js +1841 -0
- package/templates/vn-disciplinary-case-file/.thumbnail +0 -0
- package/templates/vn-disciplinary-case-file/VnDisciplinaryCaseFile.dc.html +172 -0
- package/templates/vn-disciplinary-case-file/ds-base.js +23 -0
- package/templates/vn-disciplinary-case-file/support.js +1841 -0
- package/templates/vn-disciplinary-schedule/.thumbnail +0 -0
- package/templates/vn-disciplinary-schedule/VnDisciplinarySchedule.dc.html +91 -0
- package/templates/vn-disciplinary-schedule/ds-base.js +23 -0
- package/templates/vn-disciplinary-schedule/support.js +1841 -0
- package/templates/vn-employee-request/.thumbnail +0 -0
- package/templates/vn-employee-request/VnEmployeeRequest.dc.html +137 -0
- package/templates/vn-employee-request/ds-base.js +23 -0
- package/templates/vn-employee-request/support.js +1841 -0
- package/templates/vn-exit-handover/.thumbnail +0 -0
- package/templates/vn-exit-handover/VnExitHandover.dc.html +228 -0
- package/templates/vn-exit-handover/ds-base.js +23 -0
- package/templates/vn-exit-handover/support.js +1841 -0
- package/templates/vn-foreign-employee-pack/.thumbnail +0 -0
- package/templates/vn-foreign-employee-pack/VnForeignEmployeePack.dc.html +129 -0
- package/templates/vn-foreign-employee-pack/content-schema.json +22 -0
- package/templates/vn-foreign-employee-pack/ds-base.js +23 -0
- package/templates/vn-foreign-employee-pack/support.js +1841 -0
- package/templates/vn-grassroots-democracy/.thumbnail +0 -0
- package/templates/vn-grassroots-democracy/VnGrassrootsDemocracy.dc.html +117 -0
- package/templates/vn-grassroots-democracy/ds-base.js +23 -0
- package/templates/vn-grassroots-democracy/support.js +1841 -0
- package/templates/vn-infosec-policy/.thumbnail +0 -0
- package/templates/vn-infosec-policy/VnInfosecPolicy.dc.html +116 -0
- package/templates/vn-infosec-policy/ds-base.js +23 -0
- package/templates/vn-infosec-policy/support.js +1841 -0
- package/templates/vn-internal-labor-regulations/.thumbnail +0 -0
- package/templates/vn-internal-labor-regulations/VnInternalLaborRegulations.dc.html +155 -0
- package/templates/vn-internal-labor-regulations/ds-base.js +23 -0
- package/templates/vn-internal-labor-regulations/support.js +1841 -0
- package/templates/vn-internship-agreement/.thumbnail +0 -0
- package/templates/vn-internship-agreement/VnInternshipAgreement.dc.html +112 -0
- package/templates/vn-internship-agreement/ds-base.js +23 -0
- package/templates/vn-internship-agreement/support.js +1841 -0
- package/templates/vn-job-description/.thumbnail +0 -0
- package/templates/vn-job-description/VnJobDescription.dc.html +85 -0
- package/templates/vn-job-description/ds-base.js +23 -0
- package/templates/vn-job-description/support.js +1841 -0
- package/templates/vn-labor-contract/.thumbnail +0 -0
- package/templates/vn-labor-contract/VnLaborContract.dc.html +180 -0
- package/templates/vn-labor-contract/ds-base.js +23 -0
- package/templates/vn-labor-contract/support.js +1841 -0
- package/templates/vn-labour-management-book/.thumbnail +0 -0
- package/templates/vn-labour-management-book/VnLabourManagementBook.dc.html +115 -0
- package/templates/vn-labour-management-book/ds-base.js +23 -0
- package/templates/vn-labour-management-book/support.js +1841 -0
- package/templates/vn-mutual-nda/.thumbnail +0 -0
- package/templates/vn-mutual-nda/VnMutualNda.dc.html +114 -0
- package/templates/vn-mutual-nda/ds-base.js +23 -0
- package/templates/vn-mutual-nda/support.js +1841 -0
- package/templates/vn-ndnca-ip/.thumbnail +0 -0
- package/templates/vn-ndnca-ip/VnNdncaIp.dc.html +157 -0
- package/templates/vn-ndnca-ip/ds-base.js +23 -0
- package/templates/vn-ndnca-ip/support.js +1841 -0
- package/templates/vn-offer-letter/.thumbnail +0 -0
- package/templates/vn-offer-letter/VnOfferLetter.dc.html +84 -0
- package/templates/vn-offer-letter/ds-base.js +23 -0
- package/templates/vn-offer-letter/support.js +1841 -0
- package/templates/vn-onboarding-checklist/.thumbnail +0 -0
- package/templates/vn-onboarding-checklist/VnOnboardingChecklist.dc.html +98 -0
- package/templates/vn-onboarding-checklist/content-schema.json +12 -0
- package/templates/vn-onboarding-checklist/ds-base.js +23 -0
- package/templates/vn-onboarding-checklist/support.js +1841 -0
- package/templates/vn-pdpl-consent/.thumbnail +0 -0
- package/templates/vn-pdpl-consent/VnPdplConsent.dc.html +111 -0
- package/templates/vn-pdpl-consent/ds-base.js +23 -0
- package/templates/vn-pdpl-consent/support.js +1841 -0
- package/templates/vn-performance-evaluation-regulation/.thumbnail +0 -0
- package/templates/vn-performance-evaluation-regulation/VnPerformanceEvaluationRegulation.dc.html +135 -0
- package/templates/vn-performance-evaluation-regulation/ds-base.js +23 -0
- package/templates/vn-performance-evaluation-regulation/support.js +1841 -0
- package/templates/vn-performance-review-form/.thumbnail +0 -0
- package/templates/vn-performance-review-form/VnPerformanceReviewForm.dc.html +129 -0
- package/templates/vn-performance-review-form/ds-base.js +23 -0
- package/templates/vn-performance-review-form/support.js +1841 -0
- package/templates/vn-phantom-stock/.thumbnail +0 -0
- package/templates/vn-phantom-stock/VnPhantomStock.dc.html +184 -0
- package/templates/vn-phantom-stock/content-schema.json +17 -0
- package/templates/vn-phantom-stock/ds-base.js +23 -0
- package/templates/vn-phantom-stock/support.js +1841 -0
- package/templates/vn-probation-contract/.thumbnail +0 -0
- package/templates/vn-probation-contract/VnProbationContract.dc.html +126 -0
- package/templates/vn-probation-contract/ds-base.js +23 -0
- package/templates/vn-probation-contract/support.js +1841 -0
- package/templates/vn-receipt-acknowledgement/.thumbnail +0 -0
- package/templates/vn-receipt-acknowledgement/VnReceiptAcknowledgement.dc.html +106 -0
- package/templates/vn-receipt-acknowledgement/ds-base.js +23 -0
- package/templates/vn-receipt-acknowledgement/support.js +1841 -0
- package/templates/vn-remote-work-policy/.thumbnail +0 -0
- package/templates/vn-remote-work-policy/VnRemoteWorkPolicy.dc.html +103 -0
- package/templates/vn-remote-work-policy/ds-base.js +23 -0
- package/templates/vn-remote-work-policy/support.js +1841 -0
- package/templates/vn-resignation-letter/.thumbnail +0 -0
- package/templates/vn-resignation-letter/VnResignationLetter.dc.html +71 -0
- package/templates/vn-resignation-letter/ds-base.js +23 -0
- package/templates/vn-resignation-letter/support.js +1841 -0
- package/templates/vn-salary-scale/.thumbnail +0 -0
- package/templates/vn-salary-scale/VnSalaryScale.dc.html +110 -0
- package/templates/vn-salary-scale/ds-base.js +23 -0
- package/templates/vn-salary-scale/support.js +1841 -0
- package/templates/vn-sow-appendix/.thumbnail +0 -0
- package/templates/vn-sow-appendix/VnSowAppendix.dc.html +70 -0
- package/templates/vn-sow-appendix/ds-base.js +23 -0
- package/templates/vn-sow-appendix/support.js +1841 -0
- package/templates/vn-termination-decision/.thumbnail +0 -0
- package/templates/vn-termination-decision/VnTerminationDecision.dc.html +80 -0
- package/templates/vn-termination-decision/ds-base.js +23 -0
- package/templates/vn-termination-decision/support.js +1841 -0
- package/templates/vn-total-rewards-appendix/.thumbnail +0 -0
- package/templates/vn-total-rewards-appendix/VnTotalRewardsAppendix.dc.html +138 -0
- package/templates/vn-total-rewards-appendix/ds-base.js +23 -0
- package/templates/vn-total-rewards-appendix/support.js +1841 -0
- package/templates/vn-training-commitment/.thumbnail +0 -0
- package/templates/vn-training-commitment/VnTrainingCommitment.dc.html +105 -0
- package/templates/vn-training-commitment/ds-base.js +23 -0
- package/templates/vn-training-commitment/support.js +1841 -0
- package/templates/vn-travel-expense-policy/.thumbnail +0 -0
- package/templates/vn-travel-expense-policy/VnTravelExpensePolicy.dc.html +113 -0
- package/templates/vn-travel-expense-policy/ds-base.js +23 -0
- package/templates/vn-travel-expense-policy/support.js +1841 -0
- package/tokens/colors.css +77 -0
- package/tokens/component-tokens.css +46 -0
- package/tokens/elements.css +300 -0
- package/tokens/elevation.css +46 -0
- package/tokens/fonts.css +51 -0
- package/tokens/motion.css +25 -0
- package/tokens/native/CSTokens.kt +255 -0
- package/tokens/native/CSTokens.swift +257 -0
- package/tokens/native/cs_tokens.dart +253 -0
- package/tokens/provenance.json +52 -0
- package/tokens/spacing.css +34 -0
- package/tokens/tokens.dtcg.json +1222 -0
- package/tokens/tokens.js +436 -0
- package/tokens/tokens.json +434 -0
- package/tokens/typography.css +67 -0
- package/tokens/viewer.html +261 -0
- package/ui_kits/deck/README.md +21 -0
- package/ui_kits/deck/index.html +120 -0
- package/ui_kits/status-hub/README.md +40 -0
- package/ui_kits/status-hub/StatusHub.jsx +270 -0
- package/ui_kits/status-hub/data.js +57 -0
- package/ui_kits/status-hub/identity-lab.html +134 -0
- package/ui_kits/status-hub/index.html +24 -0
- package/ui_kits/status-hub/login.html +65 -0
- package/ui_kits/status-hub/project.html +137 -0
- package/ui_kits/status-hub/settings.html +88 -0
- package/ui_kits/status-hub/status.css +199 -0
- package/ui_kits/website/README.md +36 -0
- package/ui_kits/website/Website.jsx +167 -0
- package/ui_kits/website/careers.html +109 -0
- package/ui_kits/website/chat.html +133 -0
- package/ui_kits/website/copy.js +76 -0
- package/ui_kits/website/index.html +24 -0
- package/ui_kits/website/site.css +121 -0
- package/ui_kits/website/work.html +119 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!-- @dsCard group="Components" viewport="700x180" name="Icon" subtitle="In-repo line-icon set — currentColor, 1.75 stroke" -->
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
|
+
<link rel="stylesheet" href="../../styles.css" />
|
|
8
|
+
<style>
|
|
9
|
+
body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; color: var(--cs-color-text-primary); }
|
|
10
|
+
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: 10px; max-width: 640px; }
|
|
11
|
+
.cell { display: grid; place-items: center; gap: 8px; padding: 14px 6px; border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); background: var(--cs-color-surface-panel); }
|
|
12
|
+
.cell span { font-family: var(--cs-font-family-mono); font-size: 11px; color: var(--cs-color-text-muted); }
|
|
13
|
+
.cell .g { color: var(--cs-color-brand-umber); }
|
|
14
|
+
.cell:nth-child(6) .g { color: var(--cs-color-brand-ochre); }
|
|
15
|
+
</style>
|
|
16
|
+
<script src="https://unpkg.com/react@18.3.1/umd/react.development.js" integrity="sha384-hD6/rw4ppMLGNu3tX5cjIb+uRZ7UkRJ6BPkLpg4hAu/6onKUg4lLsHAs9EBPT82L" crossorigin="anonymous"></script>
|
|
17
|
+
<script src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.development.js" integrity="sha384-u6aeetuaXnQ38mYT8rp6sbXaQe3NL9t+IBXmnYxwkUI2Hw4bsp2Wvmx4yRQF1uAm" crossorigin="anonymous"></script>
|
|
18
|
+
<script src="https://unpkg.com/@babel/standalone@7.29.0/babel.min.js" integrity="sha384-m08KidiNqLdpJqLq95G/LEi8Qvjl/xUYll3QILypMoQ65QorJ9Lvtp2RXYGBFj1y" crossorigin="anonymous"></script>
|
|
19
|
+
<script src="../../_ds_bundle.js"></script>
|
|
20
|
+
</head>
|
|
21
|
+
<body>
|
|
22
|
+
<div id="root"></div>
|
|
23
|
+
<script type="text/babel">
|
|
24
|
+
const { Icon } = (window[Object.keys(window).find(k=>/^CyberSkillDesignSystem_[0-9a-f]{6}$/.test(k))]||{});
|
|
25
|
+
const names = ["close","sun","moon","arrow-right","check","sparkle","chat","sound-on","sound-off","search","sliders","upload","download","calendar","user","plus","trash","external","menu","chevron-down","chevron-up","chevron-left","chevron-right","edit","copy","info","alert-triangle"];
|
|
26
|
+
function Demo() {
|
|
27
|
+
return (
|
|
28
|
+
<div className="grid">
|
|
29
|
+
{names.map((n) => (
|
|
30
|
+
<div className="cell" key={n}><span className="g" style={{color:"inherit"}}><Icon name={n} size="lg" /></span><span>{n}</span></div>
|
|
31
|
+
))}
|
|
32
|
+
</div>
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
ReactDOM.createRoot(document.getElementById("root")).render(<Demo />);
|
|
36
|
+
</script>
|
|
37
|
+
</body>
|
|
38
|
+
</html>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* CyberSkill brand mark — the exact official master artwork (Umber ground,
|
|
5
|
+
* Ochre genie figure). Use whenever a product is for or owned by CyberSkill;
|
|
6
|
+
* never recreate, retype, or recolour it. For third-party tenants, swap the
|
|
7
|
+
* tenant's own logo instead (do not use this mark to represent another company).
|
|
8
|
+
*/
|
|
9
|
+
export interface LogoProps extends React.SVGAttributes<SVGSVGElement> {
|
|
10
|
+
/** Rendered width/height in px. Default 32. */
|
|
11
|
+
size?: number;
|
|
12
|
+
/** Accessible name. Default "CyberSkill". */
|
|
13
|
+
title?: string;
|
|
14
|
+
/** When true, the mark is decorative (aria-hidden, no title). */
|
|
15
|
+
decorative?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function Logo(props: LogoProps): React.ReactElement;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import figma from '@figma/code-connect'
|
|
2
|
+
import { Logo } from './Logo.jsx'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Code Connect stub — Logo
|
|
6
|
+
* Prop maps stay minimal until the matching Figma library component is published;
|
|
7
|
+
* then set nodeId in code-connect/node-map.json and re-run generate-code-connect.
|
|
8
|
+
*/
|
|
9
|
+
figma.connect(Logo, 'https://www.figma.com/design/CS_FIGMA_FILE_KEY/CyberSkill?node-id=9999-50', {
|
|
10
|
+
example: () => <Logo />,
|
|
11
|
+
imports: ["import { Logo } from '@cyberskill/design'"],
|
|
12
|
+
})
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { CS_LOGO_VIEWBOX, CS_LOGO_MARK_INNER } from "./logo-data.js";
|
|
3
|
+
import { cx } from "../_utils/cx.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* CyberSkill brand mark. Renders the EXACT official master artwork (Umber ground,
|
|
7
|
+
* Ochre genie figure). Use whenever a product is for or owned by CyberSkill.
|
|
8
|
+
* Do not recreate or recolour the mark.
|
|
9
|
+
*/
|
|
10
|
+
export function Logo({ size = 32, title = "CyberSkill", decorative = false, className, ...props }) {
|
|
11
|
+
return (
|
|
12
|
+
<svg
|
|
13
|
+
{...props}
|
|
14
|
+
className={cx("cs-logo", className)}
|
|
15
|
+
width={size}
|
|
16
|
+
height={size}
|
|
17
|
+
viewBox={CS_LOGO_VIEWBOX}
|
|
18
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
19
|
+
role={decorative ? undefined : "img"}
|
|
20
|
+
aria-hidden={decorative ? true : undefined}
|
|
21
|
+
aria-label={decorative ? undefined : title}
|
|
22
|
+
dangerouslySetInnerHTML={{ __html: (decorative ? "" : `<title>${title}</title>`) + CS_LOGO_MARK_INNER }}
|
|
23
|
+
/>
|
|
24
|
+
);
|
|
25
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
**Logo** — the official CyberSkill brand mark (Umber ground, Ochre genie figure), rendered from the exact master artwork. Use whenever a product is for or owned by CyberSkill. Keep clear space ≥ 25% of the mark height; never recolour, rotate, stretch, or place on a low-contrast background.
|
|
2
|
+
|
|
3
|
+
```jsx
|
|
4
|
+
<Logo size={40} title="CyberSkill" />
|
|
5
|
+
<Logo size={24} decorative /> {/* when the name appears next to it in text */}
|
|
6
|
+
```
|
|
7
|
+
|
|
8
|
+
- For third-party / white-label tenants, use the tenant's own logo — not this mark.
|
|
9
|
+
|
|
10
|
+
- Static/print alternative: `assets/logo-mark.svg` (vector) or `assets/logo-mark.png`.
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/* Generated from @cyberskill/brand-assets/logo-mark.svg — the official CyberSkill mark.
|
|
2
|
+
* Exact master artwork (1007x1007). Do not hand-edit; replace the source SVG and regenerate. */
|
|
3
|
+
export const CS_LOGO_VIEWBOX = "0 0 1007 1007";
|
|
4
|
+
export const CS_LOGO_MARK_INNER = `<path fill="#45210E" opacity="1.000000" stroke="none"
|
|
5
|
+
d="
|
|
6
|
+
M560.000000,1008.000000
|
|
7
|
+
C373.333344,1008.000000 187.166672,1008.000000 1.000000,1008.000000
|
|
8
|
+
C1.000000,672.333313 1.000000,336.666656 1.000000,1.000000
|
|
9
|
+
C336.666656,1.000000 672.333313,1.000000 1008.000000,1.000000
|
|
10
|
+
C1008.000000,336.666656 1008.000000,672.333313 1008.000000,1008.000000
|
|
11
|
+
C858.833313,1008.000000 709.666687,1008.000000 560.000000,1008.000000
|
|
12
|
+
M440.743774,105.242386
|
|
13
|
+
C438.572540,107.309639 436.344940,109.321198 434.238464,111.452431
|
|
14
|
+
C396.510132,149.623566 372.276398,194.939011 363.356293,247.940109
|
|
15
|
+
C360.996429,261.961884 358.946777,276.673065 360.603027,290.610352
|
|
16
|
+
C365.030243,327.864777 394.910004,357.905762 431.834900,364.830811
|
|
17
|
+
C436.723083,365.747589 441.737213,365.993011 447.763702,366.669525
|
|
18
|
+
C446.254150,363.858124 445.507843,362.409912 444.709564,360.990906
|
|
19
|
+
C439.517578,351.761383 436.885193,341.740936 437.455444,331.277863
|
|
20
|
+
C439.589569,292.120056 458.815063,264.154144 494.094208,247.402267
|
|
21
|
+
C503.544983,242.914673 513.742554,238.863556 524.373901,240.455948
|
|
22
|
+
C548.543213,244.076111 568.703491,255.555466 584.000793,274.713074
|
|
23
|
+
C599.847656,294.559021 607.550598,317.209198 603.764282,342.677429
|
|
24
|
+
C602.575073,350.677063 598.728027,358.281586 595.936157,366.544159
|
|
25
|
+
C600.137085,366.074554 604.740540,365.758667 609.275574,365.021576
|
|
26
|
+
C646.763123,358.928711 678.394348,326.946808 681.791199,289.350922
|
|
27
|
+
C683.086792,275.012085 681.404419,259.972870 678.550415,245.760666
|
|
28
|
+
C660.577881,156.262833 608.759338,93.666801 525.888672,56.228947
|
|
29
|
+
C522.563171,54.726585 519.736023,54.769550 516.419739,56.200459
|
|
30
|
+
C488.640594,68.186523 463.511292,84.231010 440.743774,105.242386
|
|
31
|
+
M286.676636,492.678345
|
|
32
|
+
C287.329773,493.793732 287.835724,495.033447 288.657562,496.006378
|
|
33
|
+
C309.770172,521.000305 334.755707,541.223022 364.045837,555.811401
|
|
34
|
+
C374.407410,560.972046 385.114655,566.593323 396.291962,568.749573
|
|
35
|
+
C432.863312,575.804749 469.791931,575.543579 506.608704,569.950623
|
|
36
|
+
C542.882812,564.440125 577.636902,553.955383 610.255371,536.938660
|
|
37
|
+
C635.979919,523.518494 665.744080,527.108459 687.312561,546.611755
|
|
38
|
+
C690.823608,549.786621 693.878845,553.465637 697.214539,556.985291
|
|
39
|
+
C719.173889,537.685486 738.051208,516.184204 753.920410,491.916840
|
|
40
|
+
C752.879761,490.957520 752.286987,490.387451 751.669678,489.845367
|
|
41
|
+
C716.653381,459.096100 676.901917,436.766174 632.377991,423.023193
|
|
42
|
+
C629.713745,422.200836 626.423889,422.161865 623.725525,422.882690
|
|
43
|
+
C590.944153,431.639587 558.238403,440.679779 525.448730,449.404907
|
|
44
|
+
C522.300964,450.242554 518.534851,450.164001 515.372437,449.321808
|
|
45
|
+
C482.598022,440.593750 449.897797,431.587128 417.141144,422.791412
|
|
46
|
+
C414.867096,422.180786 412.115295,422.006958 409.909119,422.683990
|
|
47
|
+
C363.870605,436.812317 322.877258,459.923096 286.676636,492.678345
|
|
48
|
+
M638.193726,649.759216
|
|
49
|
+
C618.869507,656.015442 599.040955,658.948853 578.743958,658.635498
|
|
50
|
+
C561.320618,658.366577 544.380371,654.932678 527.565796,650.671387
|
|
51
|
+
C525.521851,650.153320 523.254150,649.859985 521.196533,650.169861
|
|
52
|
+
C512.810059,651.432678 504.514069,653.468018 496.093933,654.298462
|
|
53
|
+
C480.882416,655.798584 465.515686,658.255371 450.375763,657.410278
|
|
54
|
+
C421.185272,655.780762 394.125427,646.062805 369.145020,630.771667
|
|
55
|
+
C368.008179,630.075806 366.770874,629.544006 364.879761,628.577820
|
|
56
|
+
C379.822174,677.662048 402.386169,721.588440 433.601837,761.123535
|
|
57
|
+
C468.862305,805.781311 475.313782,854.488708 452.707825,906.779114
|
|
58
|
+
C449.580719,914.012512 445.212494,920.709351 441.423889,927.657288
|
|
59
|
+
C573.221985,890.897766 675.186523,765.328125 681.092896,630.672180
|
|
60
|
+
C667.338623,636.799011 653.131897,643.127319 638.193726,649.759216
|
|
61
|
+
M451.496307,582.220520
|
|
62
|
+
C442.351196,581.799133 433.142700,581.909058 424.076202,580.828186
|
|
63
|
+
C411.400055,579.317017 398.218109,578.681030 386.332123,574.558289
|
|
64
|
+
C354.337128,563.460327 326.346069,545.236816 301.709656,521.949341
|
|
65
|
+
C300.020294,520.352478 298.291534,518.797302 295.873596,516.571472
|
|
66
|
+
C296.025665,518.456909 295.980042,519.134644 296.144836,519.756653
|
|
67
|
+
C304.310333,550.579102 319.447479,577.592346 342.608459,599.413086
|
|
68
|
+
C382.985504,637.453735 430.264038,654.771729 486.434967,647.405457
|
|
69
|
+
C555.692078,638.323059 618.847046,614.520935 675.700134,573.984924
|
|
70
|
+
C680.675537,570.437500 685.476868,566.646118 690.581665,562.800293
|
|
71
|
+
C677.023743,544.661377 659.575134,536.325806 637.562927,537.450195
|
|
72
|
+
C626.043884,538.038574 616.340271,543.514893 606.234131,548.288513
|
|
73
|
+
C557.596436,571.262329 506.255249,582.294250 451.496307,582.220520
|
|
74
|
+
M539.676270,436.107300
|
|
75
|
+
C577.955139,425.690460 616.233948,415.273621 655.757202,404.518158
|
|
76
|
+
C635.089294,395.015900 615.544373,386.029968 595.877441,376.987946
|
|
77
|
+
C594.662292,379.021637 593.749573,380.591156 592.797180,382.136292
|
|
78
|
+
C586.595276,392.197998 578.925293,400.845184 568.666138,406.952454
|
|
79
|
+
C534.791809,427.117798 492.288269,422.383606 462.337891,394.876129
|
|
80
|
+
C456.381653,389.405701 451.112213,383.187500 445.401093,377.182709
|
|
81
|
+
C426.206024,386.105682 406.958923,395.052887 386.824615,404.412476
|
|
82
|
+
C389.268799,405.156464 390.645874,405.614380 392.043884,405.995544
|
|
83
|
+
C429.426819,416.187622 466.920624,425.996552 504.132446,436.778748
|
|
84
|
+
C515.781982,440.154175 526.683472,441.361206 537.944458,436.636871
|
|
85
|
+
C538.251221,436.508148 538.570312,436.408813 539.676270,436.107300
|
|
86
|
+
M636.169495,641.720032
|
|
87
|
+
C693.203857,621.317932 729.752136,581.965942 745.785767,523.547119
|
|
88
|
+
C689.811462,583.441650 622.343140,624.064514 542.504456,645.372620
|
|
89
|
+
C570.121521,652.872437 603.639343,651.544189 636.169495,641.720032
|
|
90
|
+
z"/>
|
|
91
|
+
<path fill="#F4BA17" opacity="1.000000" stroke="none"
|
|
92
|
+
d="
|
|
93
|
+
M441.015747,105.015450
|
|
94
|
+
C463.511292,84.231010 488.640594,68.186523 516.419739,56.200459
|
|
95
|
+
C519.736023,54.769550 522.563171,54.726585 525.888672,56.228947
|
|
96
|
+
C608.759338,93.666801 660.577881,156.262833 678.550415,245.760666
|
|
97
|
+
C681.404419,259.972870 683.086792,275.012085 681.791199,289.350922
|
|
98
|
+
C678.394348,326.946808 646.763123,358.928711 609.275574,365.021576
|
|
99
|
+
C604.740540,365.758667 600.137085,366.074554 595.936157,366.544159
|
|
100
|
+
C598.728027,358.281586 602.575073,350.677063 603.764282,342.677429
|
|
101
|
+
C607.550598,317.209198 599.847656,294.559021 584.000793,274.713074
|
|
102
|
+
C568.703491,255.555466 548.543213,244.076111 524.373901,240.455948
|
|
103
|
+
C513.742554,238.863556 503.544983,242.914673 494.094208,247.402267
|
|
104
|
+
C458.815063,264.154144 439.589569,292.120056 437.455444,331.277863
|
|
105
|
+
C436.885193,341.740936 439.517578,351.761383 444.709564,360.990906
|
|
106
|
+
C445.507843,362.409912 446.254150,363.858124 447.763702,366.669525
|
|
107
|
+
C441.737213,365.993011 436.723083,365.747589 431.834900,364.830811
|
|
108
|
+
C394.910004,357.905762 365.030243,327.864777 360.603027,290.610352
|
|
109
|
+
C358.946777,276.673065 360.996429,261.961884 363.356293,247.940109
|
|
110
|
+
C372.276398,194.939011 396.510132,149.623566 434.238464,111.452431
|
|
111
|
+
C436.344940,109.321198 438.572540,107.309639 441.015747,105.015450
|
|
112
|
+
M523.796143,200.964203
|
|
113
|
+
C522.979370,200.806061 522.153381,200.684708 521.347168,200.484161
|
|
114
|
+
C511.964752,198.150375 505.739960,190.440384 506.015442,181.511810
|
|
115
|
+
C506.292053,172.544968 512.964478,165.113678 522.410034,163.391052
|
|
116
|
+
C528.999146,162.189362 534.425354,164.852509 539.153198,168.766846
|
|
117
|
+
C541.656067,166.404358 544.030029,164.163544 546.391113,161.934906
|
|
118
|
+
C535.207764,149.868927 515.326111,149.927109 503.764648,161.836975
|
|
119
|
+
C492.335419,173.610657 493.100830,193.056198 505.417236,203.820190
|
|
120
|
+
C517.457336,214.342712 537.192993,213.508774 546.093628,202.189407
|
|
121
|
+
C543.863281,199.842941 541.645081,197.509277 539.426880,195.175613
|
|
122
|
+
C539.477722,195.664429 539.528503,196.153259 539.579346,196.642075
|
|
123
|
+
C534.598694,198.089890 529.617981,199.537689 523.796143,200.964203
|
|
124
|
+
z"/>
|
|
125
|
+
<path fill="#F4BA17" opacity="1.000000" stroke="none"
|
|
126
|
+
d="
|
|
127
|
+
M286.857971,492.402985
|
|
128
|
+
C322.877258,459.923096 363.870605,436.812317 409.909119,422.683990
|
|
129
|
+
C412.115295,422.006958 414.867096,422.180786 417.141144,422.791412
|
|
130
|
+
C449.897797,431.587128 482.598022,440.593750 515.372437,449.321808
|
|
131
|
+
C518.534851,450.164001 522.300964,450.242554 525.448730,449.404907
|
|
132
|
+
C558.238403,440.679779 590.944153,431.639587 623.725525,422.882690
|
|
133
|
+
C626.423889,422.161865 629.713745,422.200836 632.377991,423.023193
|
|
134
|
+
C676.901917,436.766174 716.653381,459.096100 751.669678,489.845367
|
|
135
|
+
C752.286987,490.387451 752.879761,490.957520 753.920410,491.916840
|
|
136
|
+
C738.051208,516.184204 719.173889,537.685486 697.214539,556.985291
|
|
137
|
+
C693.878845,553.465637 690.823608,549.786621 687.312561,546.611755
|
|
138
|
+
C665.744080,527.108459 635.979919,523.518494 610.255371,536.938660
|
|
139
|
+
C577.636902,553.955383 542.882812,564.440125 506.608704,569.950623
|
|
140
|
+
C469.791931,575.543579 432.863312,575.804749 396.291962,568.749573
|
|
141
|
+
C385.114655,566.593323 374.407410,560.972046 364.045837,555.811401
|
|
142
|
+
C334.755707,541.223022 309.770172,521.000305 288.657562,496.006378
|
|
143
|
+
C287.835724,495.033447 287.329773,493.793732 286.857971,492.402985
|
|
144
|
+
z"/>
|
|
145
|
+
<path fill="#F4BA17" opacity="1.000000" stroke="none"
|
|
146
|
+
d="
|
|
147
|
+
M638.559448,649.607422
|
|
148
|
+
C653.131897,643.127319 667.338623,636.799011 681.092896,630.672180
|
|
149
|
+
C675.186523,765.328125 573.221985,890.897766 441.421356,927.655945
|
|
150
|
+
C445.212494,920.709351 449.580719,914.012512 452.707825,906.779114
|
|
151
|
+
C475.313782,854.488708 468.862305,805.781311 433.601837,761.123535
|
|
152
|
+
C402.386169,721.588440 379.822174,677.662048 364.879761,628.577820
|
|
153
|
+
C366.770874,629.544006 368.008179,630.075806 369.145020,630.771667
|
|
154
|
+
C394.125427,646.062805 421.185272,655.780762 450.375763,657.410278
|
|
155
|
+
C465.515686,658.255371 480.882416,655.798584 496.093933,654.298462
|
|
156
|
+
C504.514069,653.468018 512.810059,651.432678 521.196533,650.169861
|
|
157
|
+
C523.254150,649.859985 525.521851,650.153320 527.565796,650.671387
|
|
158
|
+
C544.380371,654.932678 561.320618,658.366577 578.743958,658.635498
|
|
159
|
+
C599.040955,658.948853 618.869507,656.015442 638.559448,649.607422
|
|
160
|
+
z"/>
|
|
161
|
+
<path fill="#F3B917" opacity="1.000000" stroke="none"
|
|
162
|
+
d="
|
|
163
|
+
M451.996887,582.225220
|
|
164
|
+
C506.255249,582.294250 557.596436,571.262329 606.234131,548.288513
|
|
165
|
+
C616.340271,543.514893 626.043884,538.038574 637.562927,537.450195
|
|
166
|
+
C659.575134,536.325806 677.023743,544.661377 690.581665,562.800293
|
|
167
|
+
C685.476868,566.646118 680.675537,570.437500 675.700134,573.984924
|
|
168
|
+
C618.847046,614.520935 555.692078,638.323059 486.434967,647.405457
|
|
169
|
+
C430.264038,654.771729 382.985504,637.453735 342.608459,599.413086
|
|
170
|
+
C319.447479,577.592346 304.310333,550.579102 296.144836,519.756653
|
|
171
|
+
C295.980042,519.134644 296.025665,518.456909 295.873596,516.571472
|
|
172
|
+
C298.291534,518.797302 300.020294,520.352478 301.709656,521.949341
|
|
173
|
+
C326.346069,545.236816 354.337128,563.460327 386.332123,574.558289
|
|
174
|
+
C398.218109,578.681030 411.400055,579.317017 424.076202,580.828186
|
|
175
|
+
C433.142700,581.909058 442.351196,581.799133 451.996887,582.225220
|
|
176
|
+
z"/>
|
|
177
|
+
<path fill="#F2B817" opacity="1.000000" stroke="none"
|
|
178
|
+
d="
|
|
179
|
+
M539.279968,436.201538
|
|
180
|
+
C538.570312,436.408813 538.251221,436.508148 537.944458,436.636871
|
|
181
|
+
C526.683472,441.361206 515.781982,440.154175 504.132446,436.778748
|
|
182
|
+
C466.920624,425.996552 429.426819,416.187622 392.043884,405.995544
|
|
183
|
+
C390.645874,405.614380 389.268799,405.156464 386.824615,404.412476
|
|
184
|
+
C406.958923,395.052887 426.206024,386.105682 445.401093,377.182709
|
|
185
|
+
C451.112213,383.187500 456.381653,389.405701 462.337891,394.876129
|
|
186
|
+
C492.288269,422.383606 534.791809,427.117798 568.666138,406.952454
|
|
187
|
+
C578.925293,400.845184 586.595276,392.197998 592.797180,382.136292
|
|
188
|
+
C593.749573,380.591156 594.662292,379.021637 595.877441,376.987946
|
|
189
|
+
C615.544373,386.029968 635.089294,395.015900 655.757202,404.518158
|
|
190
|
+
C616.233948,415.273621 577.955139,425.690460 539.279968,436.201538
|
|
191
|
+
z"/>
|
|
192
|
+
<path fill="#F2B817" opacity="1.000000" stroke="none"
|
|
193
|
+
d="
|
|
194
|
+
M635.789856,641.836487
|
|
195
|
+
C603.639343,651.544189 570.121521,652.872437 542.504456,645.372620
|
|
196
|
+
C622.343140,624.064514 689.811462,583.441650 745.785767,523.547119
|
|
197
|
+
C729.752136,581.965942 693.203857,621.317932 635.789856,641.836487
|
|
198
|
+
z"/>
|
|
199
|
+
<path fill="#48240F" opacity="1.000000" stroke="none"
|
|
200
|
+
d="
|
|
201
|
+
M524.216736,200.974854
|
|
202
|
+
C529.617981,199.537689 534.598694,198.089890 539.579346,196.642075
|
|
203
|
+
C539.528503,196.153259 539.477722,195.664429 539.426880,195.175613
|
|
204
|
+
C541.645081,197.509277 543.863281,199.842941 546.093628,202.189407
|
|
205
|
+
C537.192993,213.508774 517.457336,214.342712 505.417236,203.820190
|
|
206
|
+
C493.100830,193.056198 492.335419,173.610657 503.764648,161.836975
|
|
207
|
+
C515.326111,149.927109 535.207764,149.868927 546.391113,161.934906
|
|
208
|
+
C544.030029,164.163544 541.656067,166.404358 539.153198,168.766846
|
|
209
|
+
C534.425354,164.852509 528.999146,162.189362 522.410034,163.391052
|
|
210
|
+
C512.964478,165.113678 506.292053,172.544968 506.015442,181.511810
|
|
211
|
+
C505.739960,190.440384 511.964752,198.150375 521.347168,200.484161
|
|
212
|
+
C522.153381,200.684708 522.979370,200.806061 524.216736,200.974854
|
|
213
|
+
z"/>`;
|
|
214
|
+
export default CS_LOGO_MARK_INNER;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<!-- @dsCard group="Components" viewport="700x220" name="Logo" subtitle="Official mark — Umber ground, Ochre genie. Never recolour." -->
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
|
+
<link rel="stylesheet" href="../../styles.css" />
|
|
8
|
+
<style>
|
|
9
|
+
body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; }
|
|
10
|
+
.row { display: flex; align-items: center; gap: 28px; flex-wrap: wrap; }
|
|
11
|
+
.swatch { display: grid; place-items: center; width: 96px; height: 96px; border-radius: var(--cs-radius-lg); }
|
|
12
|
+
.on-umber { background: var(--cs-color-brand-umber); }
|
|
13
|
+
.on-page { background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); }
|
|
14
|
+
.lockup { display: flex; align-items: center; gap: 12px; }
|
|
15
|
+
.lockup b { font: 800 22px/1 var(--cs-font-family-ui); color: var(--cs-color-brand-umber); letter-spacing: -.01em; }
|
|
16
|
+
.cap { font: 500 12px/1.4 var(--cs-font-family-ui); color: var(--cs-color-text-muted); }
|
|
17
|
+
</style>
|
|
18
|
+
<script src="https://unpkg.com/react@18.3.1/umd/react.development.js" integrity="sha384-hD6/rw4ppMLGNu3tX5cjIb+uRZ7UkRJ6BPkLpg4hAu/6onKUg4lLsHAs9EBPT82L" crossorigin="anonymous"></script>
|
|
19
|
+
<script src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.development.js" integrity="sha384-u6aeetuaXnQ38mYT8rp6sbXaQe3NL9t+IBXmnYxwkUI2Hw4bsp2Wvmx4yRQF1uAm" crossorigin="anonymous"></script>
|
|
20
|
+
<script src="https://unpkg.com/@babel/standalone@7.29.0/babel.min.js" integrity="sha384-m08KidiNqLdpJqLq95G/LEi8Qvjl/xUYll3QILypMoQ65QorJ9Lvtp2RXYGBFj1y" crossorigin="anonymous"></script>
|
|
21
|
+
<script src="../../_ds_bundle.js"></script>
|
|
22
|
+
</head>
|
|
23
|
+
<body>
|
|
24
|
+
<div id="root"></div>
|
|
25
|
+
<script type="text/babel">
|
|
26
|
+
const { Logo } = (window[Object.keys(window).find(k=>/^CyberSkillDesignSystem_[0-9a-f]{6}$/.test(k))]||{});
|
|
27
|
+
function Demo() {
|
|
28
|
+
return (
|
|
29
|
+
<div className="row">
|
|
30
|
+
<div className="swatch on-page"><Logo size={64} /></div>
|
|
31
|
+
<div className="lockup"><Logo size={44} /><b>CyberSkill</b></div>
|
|
32
|
+
<div>
|
|
33
|
+
<div className="lockup" style={{gap:16}}>
|
|
34
|
+
<Logo size={40} /><Logo size={28} /><Logo size={20} />
|
|
35
|
+
</div>
|
|
36
|
+
<p className="cap" style={{marginTop:10}}>Clear space ≥ 25% of mark height. Do not recolour, rotate, or stretch.</p>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
ReactDOM.createRoot(document.getElementById("root")).render(<Demo />);
|
|
42
|
+
</script>
|
|
43
|
+
</body>
|
|
44
|
+
</html>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
|
|
3
|
+
/** In-page table of contents with scrollspy: highlights the section currently in
|
|
4
|
+
* view (IntersectionObserver; ochre rail marker). */
|
|
5
|
+
export interface AnchorItem { id: string; label: ReactNode; }
|
|
6
|
+
export interface AnchorProps {
|
|
7
|
+
items: AnchorItem[];
|
|
8
|
+
title?: ReactNode;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export function Anchor(props: AnchorProps): React.ReactElement;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import figma from '@figma/code-connect'
|
|
2
|
+
import { Anchor } from './Anchor.jsx'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Code Connect stub — Anchor
|
|
6
|
+
* Prop maps stay minimal until the matching Figma library component is published;
|
|
7
|
+
* then set nodeId in code-connect/node-map.json and re-run generate-code-connect.
|
|
8
|
+
*/
|
|
9
|
+
figma.connect(Anchor, 'https://www.figma.com/design/CS_FIGMA_FILE_KEY/CyberSkill?node-id=9999-4', {
|
|
10
|
+
example: () => <Anchor />,
|
|
11
|
+
imports: ["import { Anchor } from '@cyberskill/design'"],
|
|
12
|
+
})
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { cx } from "../_utils/cx.js";
|
|
3
|
+
|
|
4
|
+
/** CyberSkill Anchor — in-page table of contents with scrollspy (IntersectionObserver). items: {id,label}. */
|
|
5
|
+
export function Anchor({ items = [], title, className }) {
|
|
6
|
+
const [act, setAct] = React.useState(items.length ? items[0].id : null);
|
|
7
|
+
React.useEffect(() => {
|
|
8
|
+
const els = items.map((it) => document.getElementById(it.id)).filter(Boolean);
|
|
9
|
+
if (!els.length) return;
|
|
10
|
+
const io = new IntersectionObserver((es) => {
|
|
11
|
+
const vis = es.filter((e) => e.isIntersecting).sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);
|
|
12
|
+
if (vis[0]) setAct(vis[0].target.id);
|
|
13
|
+
}, { rootMargin: "-20% 0px -70% 0px" });
|
|
14
|
+
els.forEach((el) => io.observe(el));
|
|
15
|
+
return () => io.disconnect();
|
|
16
|
+
}, [items]);
|
|
17
|
+
return (
|
|
18
|
+
<nav className={cx("cs-anchor", className)} aria-label={typeof title === "string" ? title : undefined}>
|
|
19
|
+
{title ? <div className="cs-anchor__title">{title}</div> : null}
|
|
20
|
+
{items.map((it) => (
|
|
21
|
+
<a key={it.id} href={"#" + it.id} className={cx("cs-anchor__item", act === it.id && "is-active")} aria-current={act === it.id ? "location" : undefined}>{it.label}</a>
|
|
22
|
+
))}
|
|
23
|
+
</nav>
|
|
24
|
+
);
|
|
25
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Scroll-to-top button; renders after `threshold` px of scroll. Bilingual aria. */
|
|
2
|
+
export interface BackTopProps {
|
|
3
|
+
/** Show after this many px. Default 320. */
|
|
4
|
+
threshold?: number;
|
|
5
|
+
label?: string;
|
|
6
|
+
lang?: string;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export function BackTop(props: BackTopProps): React.ReactElement;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import figma from '@figma/code-connect'
|
|
2
|
+
import { BackTop } from './BackTop.jsx'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Code Connect stub — BackTop
|
|
6
|
+
* Prop maps stay minimal until the matching Figma library component is published;
|
|
7
|
+
* then set nodeId in code-connect/node-map.json and re-run generate-code-connect.
|
|
8
|
+
*/
|
|
9
|
+
figma.connect(BackTop, 'https://www.figma.com/design/CS_FIGMA_FILE_KEY/CyberSkill?node-id=9999-6', {
|
|
10
|
+
example: () => <BackTop />,
|
|
11
|
+
imports: ["import { BackTop } from '@cyberskill/design'"],
|
|
12
|
+
})
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { makeT, useLang } from "../_i18n/i18n.js";
|
|
3
|
+
import { cx } from "../_utils/cx.js";
|
|
4
|
+
|
|
5
|
+
/** CyberSkill BackTop — scroll-to-top button; appears after a scroll threshold. */
|
|
6
|
+
export function BackTop({ threshold = 320, label, lang, className }) {
|
|
7
|
+
const [show, setShow] = React.useState(false);
|
|
8
|
+
const [ref, L] = useLang(lang);
|
|
9
|
+
const lbl = label != null ? label : makeT("BackTop", L)("label");
|
|
10
|
+
React.useEffect(() => {
|
|
11
|
+
const on = () => setShow(window.scrollY > threshold);
|
|
12
|
+
on();
|
|
13
|
+
window.addEventListener("scroll", on, { passive: true });
|
|
14
|
+
return () => window.removeEventListener("scroll", on);
|
|
15
|
+
}, [threshold]);
|
|
16
|
+
if (!show) return <span ref={ref} style={{ display: "none" }} />;
|
|
17
|
+
return (
|
|
18
|
+
<button ref={ref} type="button" className={cx("cs-backtop", className)} aria-label={lbl}
|
|
19
|
+
onClick={() => window.scrollTo({ top: 0, behavior: "smooth" })}>
|
|
20
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><path d="M12 19V5M5 12l7-7 7 7" /></svg>
|
|
21
|
+
</button>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
export interface BreadcrumbItem { label: ReactNode; href?: string; }
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Hierarchical navigation trail. The last item renders as the current page
|
|
8
|
+
* (aria-current), the rest as links.
|
|
9
|
+
*/
|
|
10
|
+
export interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {
|
|
11
|
+
items: BreadcrumbItem[];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function Breadcrumb(props: BreadcrumbProps): React.ReactElement;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import figma from '@figma/code-connect'
|
|
2
|
+
import { Breadcrumb } from './Breadcrumb.jsx'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Code Connect stub — Breadcrumb
|
|
6
|
+
* Prop maps stay minimal until the matching Figma library component is published;
|
|
7
|
+
* then set nodeId in code-connect/node-map.json and re-run generate-code-connect.
|
|
8
|
+
*/
|
|
9
|
+
figma.connect(Breadcrumb, 'https://www.figma.com/design/CS_FIGMA_FILE_KEY/CyberSkill?node-id=9999-8', {
|
|
10
|
+
example: () => <Breadcrumb />,
|
|
11
|
+
imports: ["import { Breadcrumb } from '@cyberskill/design'"],
|
|
12
|
+
})
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { makeT, useLang } from "../_i18n/i18n.js";
|
|
3
|
+
import { cx } from "../_utils/cx.js";
|
|
4
|
+
|
|
5
|
+
/** CyberSkill Breadcrumb — hierarchical trail; last item is current. */
|
|
6
|
+
export function Breadcrumb({ items = [], lang, className, ...props }) {
|
|
7
|
+
const [ref, L] = useLang(lang);
|
|
8
|
+
return (
|
|
9
|
+
<nav ref={ref} aria-label={makeT("Breadcrumb", L)("label")} {...props}>
|
|
10
|
+
<ol className={cx("cs-breadcrumb", className)}>
|
|
11
|
+
{items.map((it, i) => {
|
|
12
|
+
const last = i === items.length - 1;
|
|
13
|
+
return (
|
|
14
|
+
<li key={i}>
|
|
15
|
+
{last
|
|
16
|
+
? <span className="cs-breadcrumb__current" aria-current="page">{it.label}</span>
|
|
17
|
+
: <><a href={it.href || "#"}>{it.label}</a><span className="cs-breadcrumb__sep" aria-hidden="true">/</span></>}
|
|
18
|
+
</li>
|
|
19
|
+
);
|
|
20
|
+
})}
|
|
21
|
+
</ol>
|
|
22
|
+
</nav>
|
|
23
|
+
);
|
|
24
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
export interface CommandItem { label: string; icon?: ReactNode; shortcut?: ReactNode; onSelect?: () => void; }
|
|
5
|
+
export interface CommandGroup { label?: ReactNode; items: CommandItem[]; }
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* ⌘K command palette: scrim + search box + grouped, filterable actions. The
|
|
9
|
+
* brand's "command palette (Heavy Glass)" surface. Controlled via open/onClose;
|
|
10
|
+
* Escape and scrim-click close it.
|
|
11
|
+
*/
|
|
12
|
+
export interface CommandPaletteProps {
|
|
13
|
+
open: boolean;
|
|
14
|
+
onClose?: () => void;
|
|
15
|
+
placeholder?: string;
|
|
16
|
+
groups: CommandGroup[];
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
export function CommandPalette(props: CommandPaletteProps): React.ReactElement | null;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import figma from '@figma/code-connect'
|
|
2
|
+
import { CommandPalette } from './CommandPalette.jsx'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Code Connect stub — CommandPalette
|
|
6
|
+
* Prop maps stay minimal until the matching Figma library component is published;
|
|
7
|
+
* then set nodeId in code-connect/node-map.json and re-run generate-code-connect.
|
|
8
|
+
*/
|
|
9
|
+
figma.connect(CommandPalette, 'https://www.figma.com/design/CS_FIGMA_FILE_KEY/CyberSkill?node-id=9999-22', {
|
|
10
|
+
example: () => <CommandPalette />,
|
|
11
|
+
imports: ["import { CommandPalette } from '@cyberskill/design'"],
|
|
12
|
+
})
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { makeT, useLang } from "../_i18n/i18n.js";
|
|
3
|
+
import { cx } from "../_utils/cx.js";
|
|
4
|
+
|
|
5
|
+
/** CyberSkill CommandPalette — ⌘K overlay with search + grouped actions. Controlled via open/onClose. */
|
|
6
|
+
export function CommandPalette({ open, onClose, placeholder, groups = [], lang, className }) {
|
|
7
|
+
const [q, setQ] = React.useState("");
|
|
8
|
+
React.useEffect(() => {
|
|
9
|
+
if (!open) return;
|
|
10
|
+
const onKey = (e) => { if (e.key === "Escape") onClose && onClose(); };
|
|
11
|
+
document.addEventListener("keydown", onKey);
|
|
12
|
+
return () => document.removeEventListener("keydown", onKey);
|
|
13
|
+
}, [open]);
|
|
14
|
+
const [ref, L] = useLang(lang);
|
|
15
|
+
const t = makeT("CommandPalette", L);
|
|
16
|
+
const ph = placeholder != null ? placeholder : t("placeholder");
|
|
17
|
+
if (!open) return null;
|
|
18
|
+
const needle = q.trim().toLowerCase();
|
|
19
|
+
return (
|
|
20
|
+
<div ref={ref} className="cs-cmdk-scrim" onClick={onClose}>
|
|
21
|
+
<div className={cx("cs-cmdk", className)} role="dialog" aria-modal="true" aria-label={t("aria")} onClick={(e) => e.stopPropagation()}>
|
|
22
|
+
<div className="cs-cmdk__search">
|
|
23
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="7" /><path d="M21 21l-4.3-4.3" /></svg>
|
|
24
|
+
<input autoFocus value={q} onChange={(e) => setQ(e.target.value)} placeholder={ph} />
|
|
25
|
+
<span className="cs-kbd">{t("esc")}</span>
|
|
26
|
+
</div>
|
|
27
|
+
<div className="cs-cmdk__list">
|
|
28
|
+
{groups.map((g, gi) => {
|
|
29
|
+
const items = (g.items || []).filter((it) => !needle || String(it.label).toLowerCase().includes(needle));
|
|
30
|
+
if (!items.length) return null;
|
|
31
|
+
return (
|
|
32
|
+
<React.Fragment key={gi}>
|
|
33
|
+
{g.label ? <div className="cs-cmdk__label">{g.label}</div> : null}
|
|
34
|
+
{items.map((it, ii) => (
|
|
35
|
+
<button key={ii} type="button" className="cs-cmdk__item" onClick={() => { it.onSelect && it.onSelect(); onClose && onClose(); }}>
|
|
36
|
+
{it.icon ? <span aria-hidden="true">{it.icon}</span> : null}
|
|
37
|
+
<span>{it.label}</span>
|
|
38
|
+
{it.shortcut ? <span className="cs-kbd">{it.shortcut}</span> : null}
|
|
39
|
+
</button>
|
|
40
|
+
))}
|
|
41
|
+
</React.Fragment>
|
|
42
|
+
);
|
|
43
|
+
})}
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
);
|
|
48
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
**CommandPalette** — ⌘K overlay with search + grouped, filterable actions (Escape / scrim-click close). Controlled via `open`/`onClose`.
|
|
2
|
+
|
|
3
|
+
```jsx
|
|
4
|
+
<CommandPalette open={open} onClose={() => setOpen(false)} groups={[
|
|
5
|
+
{ label: "Go to", items: [{ label: "Dashboard", shortcut: "G D", onSelect: goDash }] },
|
|
6
|
+
]} />
|
|
7
|
+
```
|