@ippon-ui/ui 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/agents/component-library-create-from-pattern-library.agent.md +37 -0
- package/.agents/agents/patten-library-create-component.agent.md +30 -0
- package/.agents/skills/component-library/SKILL.md +169 -0
- package/.agents/skills/pattern-library/SKILL.md +277 -0
- package/.github/workflows/build.yml +34 -0
- package/.gitlab-ci.yml +12 -0
- package/.prettierignore +6 -0
- package/AGENTS.md +50 -0
- package/LICENSE +202 -0
- package/ci/build.yml +15 -0
- package/ci/common.yml +42 -0
- package/ci/deploy.yml +20 -0
- package/icons/LICENCE +202 -0
- package/icons/index.ts +69 -0
- package/icons/package.json +25 -0
- package/icons/tsconfig.json +11 -0
- package/lefthook.yml +10 -0
- package/mise.toml +55 -0
- package/package.json +26 -0
- package/pnpm-workspace.yaml +9 -0
- package/prettier.config.mts +8 -0
- package/react/LICENCE +202 -0
- package/react/README.md +75 -0
- package/react/eslint.config.js +22 -0
- package/react/package.json +63 -0
- package/react/src/CAP.ts +14 -0
- package/react/src/Card.ts +2 -0
- package/react/src/DataSelectable.ts +7 -0
- package/react/src/Grid.ts +33 -0
- package/react/src/IpponBadge.tsx +62 -0
- package/react/src/IpponButton.tsx +93 -0
- package/react/src/IpponButtonCard.tsx +34 -0
- package/react/src/IpponCard.tsx +30 -0
- package/react/src/IpponContainer.tsx +15 -0
- package/react/src/IpponGrid.tsx +56 -0
- package/react/src/IpponHSpace.tsx +56 -0
- package/react/src/IpponIcon.tsx +15 -0
- package/react/src/IpponImportFile.tsx +128 -0
- package/react/src/IpponIon.tsx +45 -0
- package/react/src/IpponMeter.tsx +43 -0
- package/react/src/IpponProgress.tsx +45 -0
- package/react/src/IpponText.tsx +56 -0
- package/react/src/IpponTitle.tsx +45 -0
- package/react/src/IpponVSpace.tsx +43 -0
- package/react/src/Optional.ts +177 -0
- package/react/src/Tokens.ts +36 -0
- package/react/src/index.ts +16 -0
- package/react/test/File.fixture.ts +13 -0
- package/react/test/IpponBadge.spec.tsx +245 -0
- package/react/test/IpponButton.spec.tsx +666 -0
- package/react/test/IpponButtonCard.spec.tsx +162 -0
- package/react/test/IpponCard.spec.tsx +133 -0
- package/react/test/IpponContainer.spec.tsx +56 -0
- package/react/test/IpponGrid.spec.tsx +140 -0
- package/react/test/IpponHSpace.spec.tsx +107 -0
- package/react/test/IpponIcon.spec.tsx +37 -0
- package/react/test/IpponImportFile.spec.tsx +431 -0
- package/react/test/IpponIon.spec.tsx +52 -0
- package/react/test/IpponMeter.spec.tsx +59 -0
- package/react/test/IpponProgress.spec.tsx +68 -0
- package/react/test/IpponText.spec.tsx +149 -0
- package/react/test/IpponTitle.spec.tsx +242 -0
- package/react/test/IpponVSpace.spec.tsx +91 -0
- package/react/tsconfig.app.json +24 -0
- package/react/tsconfig.json +4 -0
- package/react/tsconfig.node.json +23 -0
- package/react/vite.config.ts +30 -0
- package/react/vitest.config.ts +21 -0
- package/styles/.editorconfig +12 -0
- package/styles/.stylelintrc.json +75 -0
- package/styles/LICENCE +202 -0
- package/styles/README.md +107 -0
- package/styles/logo.svg +26 -0
- package/styles/package.json +67 -0
- package/styles/src/atom/_atom.scss +9 -0
- package/styles/src/atom/atom.pug +34 -0
- package/styles/src/atom/badge/_badge.scss +108 -0
- package/styles/src/atom/badge/badge.code.pug +29 -0
- package/styles/src/atom/badge/badge.md +1 -0
- package/styles/src/atom/badge/badge.mixin.pug +24 -0
- package/styles/src/atom/badge/badge.render.pug +7 -0
- package/styles/src/atom/button/_button.scss +242 -0
- package/styles/src/atom/button/button.code.pug +38 -0
- package/styles/src/atom/button/button.md +31 -0
- package/styles/src/atom/button/button.mixin.pug +30 -0
- package/styles/src/atom/button/button.render.pug +13 -0
- package/styles/src/atom/icon/_icon.scss +8 -0
- package/styles/src/atom/icon/icon.code.pug +5 -0
- package/styles/src/atom/icon/icon.md +11 -0
- package/styles/src/atom/icon/icon.mixin.pug +8 -0
- package/styles/src/atom/icon/icon.render.pug +7 -0
- package/styles/src/atom/ion/ion.code.pug +8 -0
- package/styles/src/atom/ion/ion.md +11 -0
- package/styles/src/atom/ion/ion.mixin.pug +8 -0
- package/styles/src/atom/ion/ion.render.pug +7 -0
- package/styles/src/atom/meter/_meter.scss +23 -0
- package/styles/src/atom/meter/meter.code.pug +8 -0
- package/styles/src/atom/meter/meter.md +7 -0
- package/styles/src/atom/meter/meter.mixin.pug +12 -0
- package/styles/src/atom/meter/meter.render.pug +5 -0
- package/styles/src/atom/progress/_progress.scss +23 -0
- package/styles/src/atom/progress/progress.code.pug +8 -0
- package/styles/src/atom/progress/progress.md +7 -0
- package/styles/src/atom/progress/progress.mixin.pug +14 -0
- package/styles/src/atom/progress/progress.render.pug +5 -0
- package/styles/src/atom/tab/_tab.scss +48 -0
- package/styles/src/atom/tab/tab.code.pug +5 -0
- package/styles/src/atom/tab/tab.md +1 -0
- package/styles/src/atom/tab/tab.mixin.pug +14 -0
- package/styles/src/atom/tab/tab.render.pug +4 -0
- package/styles/src/atom/text/_text.scss +74 -0
- package/styles/src/atom/text/text.code.pug +19 -0
- package/styles/src/atom/text/text.md +5 -0
- package/styles/src/atom/text/text.mixin.pug +12 -0
- package/styles/src/atom/text/text.render.pug +7 -0
- package/styles/src/atom/title/_title.scss +68 -0
- package/styles/src/atom/title/title.code.pug +25 -0
- package/styles/src/atom/title/title.md +9 -0
- package/styles/src/atom/title/title.mixin.pug +12 -0
- package/styles/src/atom/title/title.render.pug +5 -0
- package/styles/src/atom/title-display/_title-display.scss +26 -0
- package/styles/src/atom/title-display/title-display.code.pug +9 -0
- package/styles/src/atom/title-display/title-display.md +5 -0
- package/styles/src/atom/title-display/title-display.mixin.pug +6 -0
- package/styles/src/atom/title-display/title-display.render.pug +4 -0
- package/styles/src/doc.scss +2 -0
- package/styles/src/favicon.ico +0 -0
- package/styles/src/function/_conversion.scss +9 -0
- package/styles/src/index.pug +59 -0
- package/styles/src/layout-documentation.pug +14 -0
- package/styles/src/layout.pug +17 -0
- package/styles/src/molecule/_molecule.scss +2 -0
- package/styles/src/molecule/import-file/_import-file.scss +38 -0
- package/styles/src/molecule/import-file/import-file.code.pug +4 -0
- package/styles/src/molecule/import-file/import-file.md +1 -0
- package/styles/src/molecule/import-file/import-file.mixin.pug +15 -0
- package/styles/src/molecule/import-file/import-file.render.pug +5 -0
- package/styles/src/molecule/molecule.pug +20 -0
- package/styles/src/molecule/tabs/_tabs.scss +4 -0
- package/styles/src/molecule/tabs/tabs.code.pug +9 -0
- package/styles/src/molecule/tabs/tabs.md +1 -0
- package/styles/src/molecule/tabs/tabs.mixin.pug +4 -0
- package/styles/src/molecule/tabs/tabs.render.pug +4 -0
- package/styles/src/molecule/toggle/_toggle.scss +68 -0
- package/styles/src/molecule/toggle/toggle.code.pug +26 -0
- package/styles/src/molecule/toggle/toggle.md +1 -0
- package/styles/src/molecule/toggle/toggle.mixin.pug +36 -0
- package/styles/src/molecule/toggle/toggle.render.pug +5 -0
- package/styles/src/organism/_abstract-card.scss +36 -0
- package/styles/src/organism/_docorganism.scss +1 -0
- package/styles/src/organism/_organism.scss +8 -0
- package/styles/src/organism/button-card/_button-card.scss +22 -0
- package/styles/src/organism/button-card/button-card.code.pug +31 -0
- package/styles/src/organism/button-card/button-card.md +28 -0
- package/styles/src/organism/button-card/button-card.mixin.pug +8 -0
- package/styles/src/organism/button-card/button-card.render.pug +7 -0
- package/styles/src/organism/card/_card.scss +6 -0
- package/styles/src/organism/card/card.code.pug +9 -0
- package/styles/src/organism/card/card.md +23 -0
- package/styles/src/organism/card/card.mixin.pug +7 -0
- package/styles/src/organism/card/card.render.pug +7 -0
- package/styles/src/organism/container/_container.scss +3 -0
- package/styles/src/organism/container/container.code.pug +13 -0
- package/styles/src/organism/container/container.md +5 -0
- package/styles/src/organism/container/container.mixin.pug +3 -0
- package/styles/src/organism/container/container.render.pug +4 -0
- package/styles/src/organism/grid/_docgrid.scss +11 -0
- package/styles/src/organism/grid/_grid.scss +84 -0
- package/styles/src/organism/grid/grid.code.pug +25 -0
- package/styles/src/organism/grid/grid.md +1 -0
- package/styles/src/organism/grid/grid.mixin.pug +7 -0
- package/styles/src/organism/grid/grid.render.pug +5 -0
- package/styles/src/organism/h-space/_h-space.scss +49 -0
- package/styles/src/organism/h-space/h-space.code.pug +56 -0
- package/styles/src/organism/h-space/h-space.md +22 -0
- package/styles/src/organism/h-space/h-space.mixin.pug +14 -0
- package/styles/src/organism/h-space/h-space.render.pug +5 -0
- package/styles/src/organism/header/_header.scss +8 -0
- package/styles/src/organism/header/header.code.pug +14 -0
- package/styles/src/organism/header/header.md +1 -0
- package/styles/src/organism/header/header.mixin.pug +7 -0
- package/styles/src/organism/header/header.render.pug +4 -0
- package/styles/src/organism/modal/_modal.scss +58 -0
- package/styles/src/organism/modal/modal.code.pug +68 -0
- package/styles/src/organism/modal/modal.md +1 -0
- package/styles/src/organism/modal/modal.mixin.pug +25 -0
- package/styles/src/organism/modal/modal.render.pug +4 -0
- package/styles/src/organism/organism.pug +30 -0
- package/styles/src/organism/v-space/_v-space.scss +45 -0
- package/styles/src/organism/v-space/v-space.code.pug +41 -0
- package/styles/src/organism/v-space/v-space.md +20 -0
- package/styles/src/organism/v-space/v-space.mixin.pug +7 -0
- package/styles/src/organism/v-space/v-space.render.pug +5 -0
- package/styles/src/quark/_breakpoint.scss +12 -0
- package/styles/src/quark/_font.scss +38 -0
- package/styles/src/quark/_gap.scss +34 -0
- package/styles/src/quark/_placeholder.scss +27 -0
- package/styles/src/quark/_shadow.scss +13 -0
- package/styles/src/quark/_typography.scss +146 -0
- package/styles/src/template/_template.scss +1 -0
- package/styles/src/template/layout/_layout.scss +20 -0
- package/styles/src/template/layout/layout.code.pug +11 -0
- package/styles/src/template/layout/layout.md +1 -0
- package/styles/src/template/layout/layout.mixin.pug +11 -0
- package/styles/src/template/layout/layout.render.pug +4 -0
- package/styles/src/template/template.pug +16 -0
- package/styles/src/tikui.scss +5 -0
- package/styles/src/token/_doctable.scss +14 -0
- package/styles/src/token/_doctoken.scss +1 -0
- package/styles/src/token/_size.scss +9 -0
- package/styles/src/token/_token.scss +5 -0
- package/styles/src/token/color/_color.scss +9 -0
- package/styles/src/token/color/color/_base.scss +65 -0
- package/styles/src/token/color/color/_brand.scss +13 -0
- package/styles/src/token/color/color/_error.scss +13 -0
- package/styles/src/token/color/color/_information-2.scss +13 -0
- package/styles/src/token/color/color/_information.scss +13 -0
- package/styles/src/token/color/color/_neutral.scss +20 -0
- package/styles/src/token/color/color/_semantic.scss +69 -0
- package/styles/src/token/color/color/_success.scss +13 -0
- package/styles/src/token/color/color/_warning.scss +13 -0
- package/styles/src/token/color/color.js +31 -0
- package/styles/src/token/color/color.mixin.pug +19 -0
- package/styles/src/token/color/color.pug +9 -0
- package/styles/src/token/color/color.render.pug +13 -0
- package/styles/src/token/radius/_radius.scss +8 -0
- package/styles/src/token/radius/radius.js +54 -0
- package/styles/src/token/radius/radius.mixin.pug +14 -0
- package/styles/src/token/radius/radius.pug +9 -0
- package/styles/src/token/radius/radius.render.pug +11 -0
- package/styles/src/token/shadow/_shadow.scss +22 -0
- package/styles/src/token/shadow/shadow.js +45 -0
- package/styles/src/token/shadow/shadow.mixin.pug +13 -0
- package/styles/src/token/shadow/shadow.pug +9 -0
- package/styles/src/token/shadow/shadow.render.pug +9 -0
- package/styles/src/token/token.js +38 -0
- package/styles/src/token/token.pug +25 -0
- package/styles/src/token/typography/_typography.scss +103 -0
- package/styles/src/token/typography/typography.js +32 -0
- package/styles/src/token/typography/typography.mixin.pug +17 -0
- package/styles/src/token/typography/typography.pug +9 -0
- package/styles/src/token/typography/typography.render.pug +19 -0
- package/styles/test/function/conversion.test.scss +20 -0
- package/styles/test/function/sass.spec.ts +6 -0
- package/styles/tikuiconfig.json +14 -0
- package/styles/tsconfig.json +10 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
include /atom/ion/ion.mixin.pug
|
|
2
|
+
include /atom/button/button.mixin.pug
|
|
3
|
+
|
|
4
|
+
mixin ippon-toggle--title
|
|
5
|
+
.ippon-toggle--title
|
|
6
|
+
block
|
|
7
|
+
|
|
8
|
+
mixin ippon-toggle--button(options)
|
|
9
|
+
- const { id, open } = options || {};
|
|
10
|
+
- const expanded = open ? 'true' : 'false';
|
|
11
|
+
button.ippon-toggle--button(class=openClass, id=id, aria-expanded=expanded)
|
|
12
|
+
+ippon-ion({ name: 'chevron-forward', additionalClass: 'ippon-toggle--icon' })
|
|
13
|
+
block
|
|
14
|
+
|
|
15
|
+
mixin ippon-toggle--actions
|
|
16
|
+
.ippon-toggle--actions
|
|
17
|
+
block
|
|
18
|
+
|
|
19
|
+
mixin ippon-toggle--header
|
|
20
|
+
.ippon-toggle--header
|
|
21
|
+
block
|
|
22
|
+
|
|
23
|
+
mixin ippon-toggle--body(options)
|
|
24
|
+
- const { labelledBy } = options || {};
|
|
25
|
+
.ippon-toggle--body(role='region', aria-labelledby=labelledBy)
|
|
26
|
+
block
|
|
27
|
+
|
|
28
|
+
mixin ippon-toggle--content
|
|
29
|
+
.ippon-toggle--content
|
|
30
|
+
block
|
|
31
|
+
|
|
32
|
+
mixin ippon-toggle(options)
|
|
33
|
+
- const { open } = options || {};
|
|
34
|
+
- const openClass = open ? '-open' : null;
|
|
35
|
+
.ippon-toggle(class=openClass)
|
|
36
|
+
block
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
@use '../quark/shadow';
|
|
2
|
+
|
|
3
|
+
%ippon-card {
|
|
4
|
+
--_border-width: 0px;
|
|
5
|
+
--_padding-v: var(--ippon-size-16);
|
|
6
|
+
--_padding--inner-v: calc(var(--_padding-v) - var(--_border-width));
|
|
7
|
+
--_padding-h: var(--ippon-size-16);
|
|
8
|
+
--_padding--inner-h: calc(var(--_padding-h) - var(--_border-width));
|
|
9
|
+
|
|
10
|
+
box-sizing: border-box;
|
|
11
|
+
border: var(--_border-width) solid var(--ippon-color-neutral-border);
|
|
12
|
+
border-radius: var(--ippon-radius-l);
|
|
13
|
+
background-color: var(--ippon-color-neutral-surface-primary);
|
|
14
|
+
padding: var(--_padding-v) var(--_padding-h);
|
|
15
|
+
color: var(--ippon-color-neutral-text-icon-on-primary);
|
|
16
|
+
|
|
17
|
+
@include shadow.shadows;
|
|
18
|
+
|
|
19
|
+
&.-border {
|
|
20
|
+
--_border-width: 1px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
&.-small {
|
|
24
|
+
--_padding-h: var(--ippon-size-8);
|
|
25
|
+
--_padding-v: var(--ippon-size-8);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
&.-large {
|
|
29
|
+
--_padding-v: var(--ippon-size-20);
|
|
30
|
+
--_padding-h: var(--ippon-size-24);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@mixin ippon-card {
|
|
35
|
+
@extend %ippon-card;
|
|
36
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@use 'grid/docgrid';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
@use '../abstract-card';
|
|
2
|
+
@use '../../quark/shadow';
|
|
3
|
+
|
|
4
|
+
.ippon-button-card {
|
|
5
|
+
@include abstract-card.ippon-card;
|
|
6
|
+
|
|
7
|
+
display: inline-block;
|
|
8
|
+
cursor: pointer;
|
|
9
|
+
|
|
10
|
+
&:hover {
|
|
11
|
+
background-color: var(--ippon-color-neutral-surface-primary-hover);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
&:active {
|
|
15
|
+
background-color: var(--ippon-color-neutral-surface-primary-active);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&.-full-width {
|
|
19
|
+
display: block;
|
|
20
|
+
width: 100%;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
include /atom/text/text.mixin.pug
|
|
2
|
+
include /atom/icon/icon.mixin.pug
|
|
3
|
+
include /organism/h-space/h-space.mixin.pug
|
|
4
|
+
include /organism/v-space/v-space.mixin.pug
|
|
5
|
+
|
|
6
|
+
include button-card.mixin.pug
|
|
7
|
+
|
|
8
|
+
mixin ippon-button-card-example(options)
|
|
9
|
+
+ippon-button-card(options)
|
|
10
|
+
+ippon-h-space({ gap: 16, align: 'middle' })
|
|
11
|
+
+ippon-icon({ name: 'hardware-chip', variant: 'sharp', size: 24, color: 'brand-primary' })
|
|
12
|
+
+ippon-v-space({ gap: 4, align: 'left' })
|
|
13
|
+
+ippon-text({ variant: 'body', color: 'neutral-tertiary-inversed' }) Some key
|
|
14
|
+
+ippon-text({ variant: 'label', size: 'large' }) Description value
|
|
15
|
+
+ippon-icon({ name: 'chevron-forward', size: 24 })
|
|
16
|
+
|
|
17
|
+
+ippon-button-card-example({ shadow: 'l1', size: 'small' })
|
|
18
|
+
|
|
19
|
+
+ippon-button-card-example({ shadow: 'l2' })
|
|
20
|
+
|
|
21
|
+
+ippon-button-card-example({ shadow: 'l3', size: 'large' })
|
|
22
|
+
|
|
23
|
+
+ippon-button-card-example({ shadow: 'l4' })
|
|
24
|
+
|
|
25
|
+
+ippon-button-card-example({ shadow: 'l5' })
|
|
26
|
+
|
|
27
|
+
+ippon-button-card-example({ border: true })
|
|
28
|
+
|
|
29
|
+
+ippon-button-card-example({ border: true, shadow: 'l5' })
|
|
30
|
+
|
|
31
|
+
+ippon-button-card-example({ border: true, fullWidth: true })
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
## Button card
|
|
2
|
+
|
|
3
|
+
A clickable card component that acts as an interactive surface. It extends the base card styles with cursor pointer and hover/active states, making it suitable for navigation or selection purposes.
|
|
4
|
+
|
|
5
|
+
**Sizes:**
|
|
6
|
+
|
|
7
|
+
- Small `-small`
|
|
8
|
+
- Medium (Default)
|
|
9
|
+
- Large `-large`
|
|
10
|
+
|
|
11
|
+
**Shadows:**
|
|
12
|
+
|
|
13
|
+
- No shadow (default)
|
|
14
|
+
- Shadow level 1 `-shadow-l1`
|
|
15
|
+
- Shadow level 2 `-shadow-l2`
|
|
16
|
+
- Shadow level 3 `-shadow-l3`
|
|
17
|
+
- Shadow level 4 `-shadow-l4`
|
|
18
|
+
- Shadow level 5 `-shadow-l5`
|
|
19
|
+
|
|
20
|
+
**Border:**
|
|
21
|
+
|
|
22
|
+
- No border (default)
|
|
23
|
+
- Border `-border`
|
|
24
|
+
|
|
25
|
+
**Width:**
|
|
26
|
+
|
|
27
|
+
- Inline (default)
|
|
28
|
+
- Full width `-full-width`
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
mixin ippon-button-card(options)
|
|
2
|
+
- const { shadow, border, size, fullWidth } = options || {};
|
|
3
|
+
- const shadowClass = shadow ? `-shadow-${shadow}` : null;
|
|
4
|
+
- const borderClass = border ? '-border' : null;
|
|
5
|
+
- const sizeClass = size ? `-${size}` : null;
|
|
6
|
+
- const fullWidthClass = fullWidth ? '-full-width' : null;
|
|
7
|
+
button.ippon-button-card(class=[shadowClass, borderClass, sizeClass, fullWidthClass])
|
|
8
|
+
block
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
include card.mixin.pug
|
|
2
|
+
|
|
3
|
+
+ippon-card({ shadow: 'l1', size: 'small' }) Card level 1 small
|
|
4
|
+
+ippon-card({ shadow: 'l2' }) Card level 2
|
|
5
|
+
+ippon-card({ shadow: 'l3', size: 'large' }) Card level 3 large
|
|
6
|
+
+ippon-card({ shadow: 'l4' }) Card level 4
|
|
7
|
+
+ippon-card({ shadow: 'l5' }) Card level 5
|
|
8
|
+
+ippon-card({ border: true }) Card with border
|
|
9
|
+
+ippon-card({ shadow: 'l3', border: true, size: 'small' }) Card combination
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
## Card
|
|
2
|
+
|
|
3
|
+
A basic card component that serves as a container for content. It provides a consistent surface with rounded corners, padding, and optional shadow and border styling.
|
|
4
|
+
|
|
5
|
+
**Sizes:**
|
|
6
|
+
|
|
7
|
+
- Small `-small`
|
|
8
|
+
- Medium (Default)
|
|
9
|
+
- Large `-large`
|
|
10
|
+
|
|
11
|
+
**Shadows:**
|
|
12
|
+
|
|
13
|
+
- No shadow (default)
|
|
14
|
+
- Shadow level 1 `-shadow-l1`
|
|
15
|
+
- Shadow level 2 `-shadow-l2`
|
|
16
|
+
- Shadow level 3 `-shadow-l3`
|
|
17
|
+
- Shadow level 4 `-shadow-l4`
|
|
18
|
+
- Shadow level 5 `-shadow-l5`
|
|
19
|
+
|
|
20
|
+
**Border:**
|
|
21
|
+
|
|
22
|
+
- No border (default)
|
|
23
|
+
- Border `-border`
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
mixin ippon-card(options)
|
|
2
|
+
- const { shadow, border, size } = options || {};
|
|
3
|
+
- const shadowClass = shadow ? `-shadow-${shadow}` : null;
|
|
4
|
+
- const borderClass = border ? '-border' : null;
|
|
5
|
+
- const sizeClass = size ? `-${size}` : null;
|
|
6
|
+
.ippon-card(class=[shadowClass, borderClass, sizeClass])
|
|
7
|
+
block
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
include container.mixin.pug
|
|
2
|
+
include ../grid/grid.mixin.pug
|
|
3
|
+
|
|
4
|
+
+ippon-container
|
|
5
|
+
p Default container (inline-size)
|
|
6
|
+
|
|
7
|
+
hr
|
|
8
|
+
+ippon-container
|
|
9
|
+
+ippon-grid('-container-4 -container-m-12 -gap-16 -gap-l-32')
|
|
10
|
+
+ippon-grid--slot Slot 1
|
|
11
|
+
+ippon-grid--slot Slot 2
|
|
12
|
+
+ippon-grid--slot Slot 3
|
|
13
|
+
+ippon-grid--slot Slot 4
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
## Container
|
|
2
|
+
|
|
3
|
+
A container component that establishes a container query context. It allows child elements to use container queries to respond to the container's dimensions rather than the viewport size.
|
|
4
|
+
|
|
5
|
+
The container uses `container-type: inline-size` to enable queries based on the container's inline (width) dimension.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
.ipp-doc-container {
|
|
2
|
+
container-type: inline-size;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.ipp-doc-slot {
|
|
6
|
+
box-sizing: border-box;
|
|
7
|
+
border: var(--ippon-size-4) solid var(--ippon-color-brand-border);
|
|
8
|
+
background-color: var(--ippon-color-brand-surface-primary);
|
|
9
|
+
padding: var(--ippon-size-16);
|
|
10
|
+
color: var(--ippon-color-brand-text-icon-on-primary);
|
|
11
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
@use '../../quark/breakpoint';
|
|
2
|
+
@use '../../quark/gap';
|
|
3
|
+
@use 'sass:math';
|
|
4
|
+
|
|
5
|
+
$ippon-grid-columns: 4, 12;
|
|
6
|
+
$ippon-grid-max-columns: math.max($ippon-grid-columns...);
|
|
7
|
+
|
|
8
|
+
@mixin ippon-grid-layout-column($layout, $columns) {
|
|
9
|
+
&.-#{$layout}-#{$columns} {
|
|
10
|
+
grid-template-columns: repeat(#{$columns}, 1fr);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
@mixin ippon-grid-layout($layout) {
|
|
15
|
+
@each $columns in $ippon-grid-columns {
|
|
16
|
+
@include ippon-grid-layout-column($layout, $columns);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@mixin ippon-grid-layout-breakpoint-column($layout, $breakpoint, $columns) {
|
|
21
|
+
&.-#{$layout}-#{$breakpoint}-#{$columns} {
|
|
22
|
+
grid-template-columns: repeat(#{$columns}, 1fr);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@mixin ippon-grid-layout-breakpoint($layout, $breakpoint) {
|
|
27
|
+
@each $columns in $ippon-grid-columns {
|
|
28
|
+
@include ippon-grid-layout-breakpoint-column($layout, $breakpoint, $columns);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@mixin ippon-grid-slot-column {
|
|
33
|
+
@for $column from 1 through $ippon-grid-max-columns {
|
|
34
|
+
&.-col-#{$column} {
|
|
35
|
+
grid-column: span #{$column};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@mixin ippon-grid-slot-breakpoint-column($breakpoint) {
|
|
41
|
+
@for $column from 1 through $ippon-grid-max-columns {
|
|
42
|
+
&.-col-#{$breakpoint}-#{$column} {
|
|
43
|
+
grid-column: span #{$column};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.ippon-grid {
|
|
49
|
+
display: grid;
|
|
50
|
+
|
|
51
|
+
@include gap.gaps;
|
|
52
|
+
@include gap.media-gaps;
|
|
53
|
+
@include gap.container-gaps;
|
|
54
|
+
@include ippon-grid-layout('media');
|
|
55
|
+
@include ippon-grid-layout('container');
|
|
56
|
+
|
|
57
|
+
&--slot {
|
|
58
|
+
@include ippon-grid-slot-column;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@each $breakpoint, $breakpoint-value in breakpoint.$media-breakpoints {
|
|
62
|
+
&--slot {
|
|
63
|
+
@media (min-width: $breakpoint-value) {
|
|
64
|
+
@include ippon-grid-slot-breakpoint-column($breakpoint);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@media (min-width: $breakpoint-value) {
|
|
69
|
+
@include ippon-grid-layout-breakpoint('media', $breakpoint);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@each $breakpoint, $container-value in breakpoint.$container-breakpoints {
|
|
74
|
+
&--slot {
|
|
75
|
+
@container (min-width: #{$container-value}) {
|
|
76
|
+
@include ippon-grid-slot-breakpoint-column($breakpoint);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@container (min-width: #{$container-value}) {
|
|
81
|
+
@include ippon-grid-layout-breakpoint('container', $breakpoint);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
include grid.mixin.pug
|
|
2
|
+
|
|
3
|
+
mixin ippon-grid--slot-example(classes)
|
|
4
|
+
.ippon-grid--slot(class=classes)
|
|
5
|
+
.ipp-doc-slot= `Slot (${classes})`
|
|
6
|
+
|
|
7
|
+
+ippon-grid('-media-4 -media-tab-12 -gap-16 -gap-desktop-s-32')
|
|
8
|
+
+ippon-grid--slot-example('-col-2 -col-tab-4')
|
|
9
|
+
+ippon-grid--slot-example('-col-2 -col-tab-4')
|
|
10
|
+
+ippon-grid--slot-example('-col-4 -col-tab-4')
|
|
11
|
+
+ippon-grid--slot-example('-col-4 -col-tab-6')
|
|
12
|
+
+ippon-grid--slot-example('-col-4 -col-tab-6')
|
|
13
|
+
+ippon-grid--slot-example('-col-1 -col-tab-2')
|
|
14
|
+
+ippon-grid--slot-example('-col-3 -col-tab-10')
|
|
15
|
+
|
|
16
|
+
hr
|
|
17
|
+
|
|
18
|
+
+ippon-grid('-container-4 -container-m-12 -gap-16 -gap-l-32')
|
|
19
|
+
+ippon-grid--slot-example('-col-2 -col-m-4')
|
|
20
|
+
+ippon-grid--slot-example('-col-2 -col-m-4')
|
|
21
|
+
+ippon-grid--slot-example('-col-4 -col-m-4')
|
|
22
|
+
+ippon-grid--slot-example('-col-4 -col-m-6')
|
|
23
|
+
+ippon-grid--slot-example('-col-4 -col-m-6')
|
|
24
|
+
+ippon-grid--slot-example('-col-1 -col-m-2')
|
|
25
|
+
+ippon-grid--slot-example('-col-3 -col-m-10')
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
## Grid
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
@use '../../quark/gap';
|
|
2
|
+
|
|
3
|
+
.ippon-h-space {
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: row;
|
|
6
|
+
margin: 0;
|
|
7
|
+
padding: 0;
|
|
8
|
+
list-style: none;
|
|
9
|
+
|
|
10
|
+
@include gap.gaps;
|
|
11
|
+
|
|
12
|
+
&.-wrap {
|
|
13
|
+
flex-wrap: wrap;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
&.-space-between {
|
|
17
|
+
justify-content: space-between;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
&.-top {
|
|
21
|
+
align-items: flex-start;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
&.-middle {
|
|
25
|
+
align-items: center;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
&.-bottom {
|
|
29
|
+
align-items: flex-end;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&.-left {
|
|
33
|
+
justify-content: flex-start;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
&.-center {
|
|
37
|
+
justify-content: center;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
&.-right {
|
|
41
|
+
justify-content: flex-end;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
&--slot {
|
|
45
|
+
&.-expand {
|
|
46
|
+
flex: 1;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
include h-space.mixin.pug
|
|
2
|
+
|
|
3
|
+
mixin ippon-h-space-rectangle(height = 32)
|
|
4
|
+
div(
|
|
5
|
+
style=`width: var(--ippon-size-32); height: var(--ippon-size-${height}); background-color: var(--ippon-color-brand-surface-primary); border-radius: var(--ippon-radius-m)`
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
mixin ippon-h-space-equal-rectangles(options)
|
|
9
|
+
+ippon-h-space-rectangle(options)
|
|
10
|
+
+ippon-h-space-rectangle(options)
|
|
11
|
+
+ippon-h-space-rectangle(options)
|
|
12
|
+
|
|
13
|
+
mixin ippon-h-space-mixed-rectangles
|
|
14
|
+
+ippon-h-space-rectangle(16)
|
|
15
|
+
+ippon-h-space-rectangle(8)
|
|
16
|
+
+ippon-h-space-rectangle(32)
|
|
17
|
+
|
|
18
|
+
+ippon-h-space
|
|
19
|
+
+ippon-h-space-equal-rectangles
|
|
20
|
+
|
|
21
|
+
+ippon-h-space({ gap: 8 })
|
|
22
|
+
+ippon-h-space-equal-rectangles
|
|
23
|
+
|
|
24
|
+
+ippon-h-space({ gap: 32, align: 'middle' })
|
|
25
|
+
+ippon-h-space-mixed-rectangles
|
|
26
|
+
|
|
27
|
+
+ippon-h-space({ gap: 16, align: 'top' })
|
|
28
|
+
+ippon-h-space-mixed-rectangles
|
|
29
|
+
|
|
30
|
+
+ippon-h-space({ gap: 20, align: 'bottom' })
|
|
31
|
+
+ippon-h-space-mixed-rectangles
|
|
32
|
+
|
|
33
|
+
+ippon-h-space({ gap: 32, align: 'left' })
|
|
34
|
+
+ippon-h-space-equal-rectangles
|
|
35
|
+
|
|
36
|
+
+ippon-h-space({ gap: 16, align: 'center' })
|
|
37
|
+
+ippon-h-space-equal-rectangles
|
|
38
|
+
|
|
39
|
+
+ippon-h-space({ gap: 20, align: 'right' })
|
|
40
|
+
+ippon-h-space-equal-rectangles
|
|
41
|
+
|
|
42
|
+
+ippon-h-space({ gap: 20, align: 'space-between' })
|
|
43
|
+
+ippon-h-space-equal-rectangles
|
|
44
|
+
|
|
45
|
+
+ippon-h-space({ gap: 16, align: 'stretch' })
|
|
46
|
+
+ippon-h-space-rectangle
|
|
47
|
+
+ippon-h-space--slot({ expand: true })
|
|
48
|
+
+ippon-h-space-rectangle
|
|
49
|
+
+ippon-h-space-rectangle
|
|
50
|
+
|
|
51
|
+
+ippon-h-space({ gap: 16, wrap: true })
|
|
52
|
+
each i in Array(40).fill()
|
|
53
|
+
+ippon-h-space-rectangle
|
|
54
|
+
|
|
55
|
+
+ippon-h-space({ gap: 16, tag: 'section' })
|
|
56
|
+
+ippon-h-space-equal-rectangles
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
## Horizontal space (h-space)
|
|
2
|
+
|
|
3
|
+
The `h-space` organism represents horizontal spaces between elements.
|
|
4
|
+
|
|
5
|
+
**Gap**
|
|
6
|
+
|
|
7
|
+
The `-gap-{size}` alternative specifies the gap between child elements.
|
|
8
|
+
|
|
9
|
+
**Tag**
|
|
10
|
+
|
|
11
|
+
The `tag` property allows specifying a custom HTML element (e.g., `div`, `section`, `article`). Defaults to `div`.
|
|
12
|
+
|
|
13
|
+
**Vertical Alignment**
|
|
14
|
+
|
|
15
|
+
The following alternatives control the vertical alignment of child elements:
|
|
16
|
+
|
|
17
|
+
- `-top`: Vertically align items to the top
|
|
18
|
+
- `-middle`: Vertically align items to the middle
|
|
19
|
+
- `-bottom`: Vertically align items to the bottom
|
|
20
|
+
- `-left`: Horizontally align items to the left
|
|
21
|
+
- `-center`: Horizontally align items to the center
|
|
22
|
+
- `-right`: Horizontally align items to the right
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
mixin ippon-h-space(options)
|
|
2
|
+
- const { gap, align, wrap, tag } = options || {};
|
|
3
|
+
- const gapClass = gap ? `-gap-${gap}` : null;
|
|
4
|
+
- const alignClass = align ? `-${align}` : null;
|
|
5
|
+
- const wrapClass = wrap ? '-wrap' : null;
|
|
6
|
+
|
|
7
|
+
#{tag || 'div'}.ippon-h-space(class=[gapClass, alignClass, wrapClass])
|
|
8
|
+
block
|
|
9
|
+
|
|
10
|
+
mixin ippon-h-space--slot(options)
|
|
11
|
+
- const { expand } = options || {};
|
|
12
|
+
- const expandClass = expand ? '-expand' : null;
|
|
13
|
+
.ippon-h-space--slot(class=expandClass)
|
|
14
|
+
block
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
.ippon-header {
|
|
2
|
+
display: flex;
|
|
3
|
+
gap: var(--ippon-size-32);
|
|
4
|
+
align-items: center;
|
|
5
|
+
border-bottom: 1px solid var(--ippon-color-neutral-border);
|
|
6
|
+
background-color: var(--ippon-color-neutral-surface-primary);
|
|
7
|
+
padding: var(--ippon-size-32) var(--ippon-size-48);
|
|
8
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
include /molecule/tabs/tabs.mixin.pug
|
|
2
|
+
include /atom/tab/tab.mixin.pug
|
|
3
|
+
|
|
4
|
+
include header.mixin.pug
|
|
5
|
+
|
|
6
|
+
+ippon-header
|
|
7
|
+
+ippon-header--slot Logo
|
|
8
|
+
+ippon-header--slot
|
|
9
|
+
+ippon-tabs({ id: 'main-navigation' })
|
|
10
|
+
+ippon-tab({ id: 'tab-1', controls: 'main-navigation' }) Tab 1
|
|
11
|
+
+ippon-tab({ id: 'tab-2', controls: 'main-navigation', selected: true }) Tab 2
|
|
12
|
+
+ippon-tab({ id: 'tab-3', controls: 'main-navigation', href: '#tab3' }) Tab 3
|
|
13
|
+
+ippon-tab({ id: 'tab-4', controls: 'main-navigation' }) Tab 4
|
|
14
|
+
+ippon-tab({ id: 'tab-5', controls: 'main-navigation' }) Tab 5
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
## Header
|