diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000000..b64458dbf1
Binary files /dev/null and b/.DS_Store differ
diff --git a/.github/workflows/develop-release.yml b/.github/workflows/develop-release.yml
new file mode 100644
index 0000000000..0c72846251
--- /dev/null
+++ b/.github/workflows/develop-release.yml
@@ -0,0 +1,22 @@
+# Trigger jenkins workflow to build webup on 172.16.2.103 using ketchup.zip from branch staging
+
+name: ketchup-outsourcing-release
+
+on:
+ push:
+ branches:
+ - staging
+
+jobs:
+ run-cicd:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Trigger jenkins workflow
+ uses: fjogeleit/http-request-action@v1
+ with:
+ url: 'https://webuptest.smeup.com/jenkins/job/WebupKetchupOutsourcingPipeline/build?token=${{ secrets.JENKINS_WEBHOOK_TOKEN }}'
+ method: 'GET'
+ username: ${{ secrets.JENKINS_WEBHOOK_USERNAME }}
+ password: ${{ secrets.JENKINS_WEBHOOK_PASSWORD }}
\ No newline at end of file
diff --git a/.github/workflows/staging.yaml b/.github/workflows/staging.yaml
index 565fd62f8f..43ec2477b3 100644
--- a/.github/workflows/staging.yaml
+++ b/.github/workflows/staging.yaml
@@ -6,6 +6,7 @@ on:
- staging
env:
+ VERSION: TEST-SNAPSHOT
AWS_REGION: eu-south-1
jobs:
@@ -28,6 +29,12 @@ jobs:
- name: Run Ketchup Showcase build
run: npm run ksc:build
+
+ - name: Zip artifacts
+ run: |
+ cd packages/ketchup/dist
+ zip -qr /tmp/ketchup.zip *
+ zip -qr /tmp/ketchup-components.zip ketchup/*
- name: Setup AWS
uses: aws-actions/configure-aws-credentials@v4
@@ -37,4 +44,9 @@ jobs:
aws-region: ${{ env.AWS_REGION }}
- name: Upload artifacts to AWS S3
+ run: |
+ aws s3 cp /tmp/ketchup.zip s3://smeup-ketchup/npm-pub/ketchup-stencil/${{ env.VERSION }}/zip/ketchup.zip
+ aws s3 cp /tmp/ketchup-components.zip s3://smeup-ketchup/npm-pub/ketchup-stencil/${{ env.VERSION }}/zip/ketchup-components.zip
+
+ - name: Upload showcase to AWS S3
run: aws s3 sync packages/ketchup-showcase/dist/ s3://smeup-ketchup/staging/ --delete
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 6e32073ba6..4c3560aedd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@ packages/ketchup/src/assets/debug.js
target/
.yarn/cache
.yarn/install-state.gz
+.package-lock.json
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 0c4b71bfdd..5506159556 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,4 +1,5 @@
{
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
@@ -25,5 +26,8 @@
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[scss]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
diff --git a/README.md b/README.md
index 878252cf17..3941a5221d 100644
--- a/README.md
+++ b/README.md
@@ -54,7 +54,8 @@ Ketchup repository is a monorepo multi-package repository managed with [Lerna](h
## Showcase
-Go to [Ketchup Showcase](http://ketchup.smeup.com) to see our components live.
(back to top)
+
+Go to [Ketchup Showcase](https://smeup.github.io/ketchup/) to see our components live.(back to top)
## Getting started
diff --git a/packages/.DS_Store b/packages/.DS_Store
new file mode 100644
index 0000000000..353dd0c3ec
Binary files /dev/null and b/packages/.DS_Store differ
diff --git a/packages/ketchup-showcase/public/showcase.css b/packages/ketchup-showcase/public/showcase.css
index 03b3b25ed1..1bcd9fbc31 100644
--- a/packages/ketchup-showcase/public/showcase.css
+++ b/packages/ketchup-showcase/public/showcase.css
@@ -38,26 +38,24 @@
}
code.flat {
- background: none;
- border-radius: 0;
- box-shadow: 0 0 2px 0px rgb(128, 128, 128);
- color: var(--kup-primary-color);
+ background: var(--kup-layer-1);
+ border-radius: var(--kup-radius-00);
+ border: 1px solid var(--kup-border-subtle);
+ color: var(--kup-text-primary);
display: flex;
font-family: var(--kup-font-family-monospace);
- font-size: 16px;
+ font-size: 14px;
font-weight: 500;
margin: auto;
max-width: 100%;
- padding: 20px 10px;
+ padding: var(--kup-space-04) var(--kup-space-03);
width: max-content;
}
.code-word {
- color: var(--kup-primary-color);
- font-family: var(--kup-font-family-monospace);
- font-size: 1.2em;
+ color: var(--kup-primary-color-60);
+ /* font-family: var(--kup-font-family-monospace); */
font-weight: 600;
- word-break: break-word;
}
.sample-section .code-word {
diff --git a/packages/ketchup-showcase/src/App.vue b/packages/ketchup-showcase/src/App.vue
index c5eb23661a..fe5fa907c8 100644
--- a/packages/ketchup-showcase/src/App.vue
+++ b/packages/ketchup-showcase/src/App.vue
@@ -130,7 +130,7 @@ export default {
) {
dom.ketchupInit = {
...dom.ketchupInit,
- theme: { name: 'dark' },
+ theme: { name: 'octane' },
};
}
document.addEventListener('kup-theme-change', () => {
@@ -161,9 +161,9 @@ export default {
methods: {
changeTheme(e: CustomEvent): void {
if (e.detail.value === 'on') {
- dom.ketchup.theme.set('dark');
+ dom.ketchup.theme.set('darkOctaneGray');
} else {
- dom.ketchup.theme.set('ketchup');
+ dom.ketchup.theme.set('octane');
}
},
drawerReady(): void {
@@ -197,7 +197,7 @@ export default {
},
removeSpinner(): void {
setTimeout(() => {
- if (dom.ketchup.theme.name === 'dark') {
+ if (dom.ketchup.theme.name === 'darkOctaneGray') {
theme.checked = true;
}
spinnerLabel.innerHTML = 'Ready!';
@@ -897,6 +897,16 @@ export default {
value: 'KupTheme',
visible: true,
},
+ {
+ cells: {
+ ROUTE: {
+ value: 'kup-token',
+ },
+ },
+ icon: 'dns',
+ value: 'KupToken',
+ visible: true,
+ },
{
cells: {
ROUTE: {
@@ -1105,7 +1115,7 @@ label {
}
.version {
- border-top: 1px solid var(--kup-border-color);
+ border-top: 1px solid var(--kup-border-subtle);
box-sizing: border-box;
font-weight: 600;
margin-top: auto;
@@ -1205,7 +1215,7 @@ a.footer__icon--trailing {
#rasterize-viewer {
background: var(--kup-background-color);
bottom: 0;
- border: 1px solid var(--kup-border-color);
+ border: 1px solid var(--kup-border-subtle);
height: 30vh;
overflow: auto;
position: fixed;
diff --git a/packages/ketchup-showcase/src/plugins/router.ts b/packages/ketchup-showcase/src/plugins/router.ts
index 520ef39ceb..a10610b508 100644
--- a/packages/ketchup-showcase/src/plugins/router.ts
+++ b/packages/ketchup-showcase/src/plugins/router.ts
@@ -347,6 +347,11 @@ const frameworkRoutes = [
name: 'kup-theme',
component: () => import(`@/views/framework/kup-theme/KupTheme.vue`),
},
+ {
+ path: `/kup-token`,
+ name: 'kup-token',
+ component: () => import(`@/views/framework/kup-token/KupToken.vue`),
+ },
{
path: `/kup-toolbar`,
name: 'kup-toolbar',
diff --git a/packages/ketchup-showcase/src/views/components/advanced/card/examples/CardCollapsible.vue b/packages/ketchup-showcase/src/views/components/advanced/card/examples/CardCollapsible.vue
index 552818f473..37d2137c49 100644
--- a/packages/ketchup-showcase/src/views/components/advanced/card/examples/CardCollapsible.vue
+++ b/packages/ketchup-showcase/src/views/components/advanced/card/examples/CardCollapsible.vue
@@ -138,7 +138,7 @@ export default {
],
},
],
- color: ['var(--kup-spinner-color)', 'var(--kup-border-color)'],
+ color: ['var(--kup-spinner-color)', 'var(--kup-border-subtle)'],
image: [
{
data: [
diff --git a/packages/ketchup-showcase/src/views/components/advanced/card/examples/CardDialog.vue b/packages/ketchup-showcase/src/views/components/advanced/card/examples/CardDialog.vue
index be3ba3a7b6..ba71d185be 100644
--- a/packages/ketchup-showcase/src/views/components/advanced/card/examples/CardDialog.vue
+++ b/packages/ketchup-showcase/src/views/components/advanced/card/examples/CardDialog.vue
@@ -313,7 +313,7 @@ export default {
],
},
],
- color: ['var(--kup-spinner-color)', 'var(--kup-border-color)'],
+ color: ['var(--kup-spinner-color)', 'var(--kup-border-subtle)'],
combobox: [
{
data: {
diff --git a/packages/ketchup-showcase/src/views/components/advanced/card/examples/CardStandard.vue b/packages/ketchup-showcase/src/views/components/advanced/card/examples/CardStandard.vue
index d1bfacc2f8..7b6542c6ea 100644
--- a/packages/ketchup-showcase/src/views/components/advanced/card/examples/CardStandard.vue
+++ b/packages/ketchup-showcase/src/views/components/advanced/card/examples/CardStandard.vue
@@ -1164,7 +1164,7 @@ export default {
],
},
],
- color: ['var(--kup-spinner-color)', 'var(--kup-border-color)'],
+ color: ['var(--kup-spinner-color)', 'var(--kup-border-subtle)'],
combobox: [
{
data: {
diff --git a/packages/ketchup-showcase/src/views/components/advanced/dashboard/examples/DashboardLogin.vue b/packages/ketchup-showcase/src/views/components/advanced/dashboard/examples/DashboardLogin.vue
index 3eefd0028f..a28ad3cdd2 100644
--- a/packages/ketchup-showcase/src/views/components/advanced/dashboard/examples/DashboardLogin.vue
+++ b/packages/ketchup-showcase/src/views/components/advanced/dashboard/examples/DashboardLogin.vue
@@ -241,7 +241,7 @@ export default {
}
.login-box {
- border: 1px solid var(--kup-border-color);
+ border: 1px solid var(--kup-border-subtle);
box-shadow: var(--kup-box-shadow);
margin: 4px;
padding: 8px;
diff --git a/packages/ketchup-showcase/src/views/components/basic/chip/Chip.vue b/packages/ketchup-showcase/src/views/components/basic/chip/Chip.vue
index ac938755f5..496d5fc922 100644
--- a/packages/ketchup-showcase/src/views/components/basic/chip/Chip.vue
+++ b/packages/ketchup-showcase/src/views/components/basic/chip/Chip.vue
@@ -15,6 +15,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -24,6 +39,11 @@ import ChipBasic from '@/views/components/basic/chip/examples/ChipBasic';
import ChipChoice from '@/views/components/basic/chip/examples/ChipChoice';
import ChipFilter from '@/views/components/basic/chip/examples/ChipFilter';
import ChipInput from '@/views/components/basic/chip/examples/ChipInput';
+import ChipSize from '@/views/components/basic/chip/examples/ChipSize';
+import ChipVariant from '@/views/components/basic/chip/examples/ChipVariant';
+import ChipColor from '@/views/components/basic/chip/examples/ChipColor';
+import ChipStructure from '@/views/components/basic/chip/examples/ChipStructure';
+import ChipCombination from '@/views/components/basic/chip/examples/ChipCombination';
import Comp from '@/views/templates/Comp';
export default {
components: {
@@ -32,6 +52,11 @@ export default {
ChipChoice,
ChipFilter,
ChipInput,
+ ChipSize,
+ ChipVariant,
+ ChipColor,
+ ChipStructure,
+ ChipCombination,
Comp,
},
data() {
@@ -45,6 +70,11 @@ export default {
'Choice chips',
'Filter chips',
'Input chips',
+ 'Chip Size',
+ 'Chip Variant',
+ 'Chip Color',
+ 'Chip Structure',
+ 'Chip Combination',
],
};
},
diff --git a/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipColor.vue b/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipColor.vue
new file mode 100644
index 0000000000..3f62e202cd
--- /dev/null
+++ b/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipColor.vue
@@ -0,0 +1,53 @@
+
+
+
+
+ You can use the kup-primary class to set
+ the color of the chip. The default is
+ neutral.
+
+
+
+
+
+
+
Default color 'neutral'
+
{{ markupBasic }}
+
+
+
+
+
+
+
Set color to 'primary'
+
{{ markupBasicSmall }}
+
+
+
+
+
+
diff --git a/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipCombination.vue b/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipCombination.vue
new file mode 100644
index 0000000000..352699d17b
--- /dev/null
+++ b/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipCombination.vue
@@ -0,0 +1,65 @@
+
+
+
+
You can use all the styling above to get some advanced chip:
+
+
+
+
+
+
Primary Raised Chip with icon
+
{{ markupBasic }}
+
{{ markupBasicData }}
+
+
+
+
+
+
+
Neutral outlined Chips'
+
{{ markupBasic2 }}
+
{{ markupBasicData2 }}
+
+
+
+
+
+
diff --git a/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipSize.vue b/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipSize.vue
new file mode 100644
index 0000000000..61f6471f13
--- /dev/null
+++ b/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipSize.vue
@@ -0,0 +1,53 @@
+
+
+
+
+ You can use the sizing attribute to
+ decide the size of the chip. The default is
+ medium.
+
+
+
+
+
+
+
Default Sizing medium
+
{{ markupBasic }}
+
+
+
+
+
+
+
Set sizing to 'small'
+
{{ markupBasicSmall }}
+
+
+
+
+
+
diff --git a/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipStructure.vue b/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipStructure.vue
new file mode 100644
index 0000000000..0f3f6d3c4c
--- /dev/null
+++ b/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipStructure.vue
@@ -0,0 +1,54 @@
+
+
+
+
+ The Chip component is build on 3 part: A leading optional icon, a text
+ and a trailing optional clear icon [#input chips].
+
+
+
+
+
+
+
You can change or remove the icon. In this case is passed the
+ 'widgets' icon
+
{{ markupBasic }}
+
+
+
+
+
+
+
Without icon
+
{{ markupBasicWihoutIcon }}
+
+
+
+
+
+
diff --git a/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipVariant.vue b/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipVariant.vue
new file mode 100644
index 0000000000..007850196d
--- /dev/null
+++ b/packages/ketchup-showcase/src/views/components/basic/chip/examples/ChipVariant.vue
@@ -0,0 +1,53 @@
+
+
+
+
+ You can use the styling attribute to
+ decide the variant of the chip. The default is
+ raised.
+
+
+
+
+
+
+
Default variant 'raised'
+
{{ markupBasic }}
+
+
+
+
+
+
+
Set variant to 'outlined'
+
{{ markupBasicSmall }}
+
+
+
+
+
+
diff --git a/packages/ketchup-showcase/src/views/components/basic/iframe/examples/IframeDemo.vue b/packages/ketchup-showcase/src/views/components/basic/iframe/examples/IframeDemo.vue
index 42ea8f3a42..a28ac8c47f 100644
--- a/packages/ketchup-showcase/src/views/components/basic/iframe/examples/IframeDemo.vue
+++ b/packages/ketchup-showcase/src/views/components/basic/iframe/examples/IframeDemo.vue
@@ -80,7 +80,8 @@ function createComp() {
flat: true,
};
comp.id = 'demo-component';
- comp.src = 'https://ketchup.smeup.com';
+ comp.src = 'https://smeup.github.io/ketchup/';
+
return comp;
}
diff --git a/packages/ketchup-showcase/src/views/components/basic/image/examples/ImageCss.vue b/packages/ketchup-showcase/src/views/components/basic/image/examples/ImageCss.vue
index 8143ebd436..8ecd858842 100644
--- a/packages/ketchup-showcase/src/views/components/basic/image/examples/ImageCss.vue
+++ b/packages/ketchup-showcase/src/views/components/basic/image/examples/ImageCss.vue
@@ -33,7 +33,7 @@
+
+ The switch component can be used in its smaller version using the
+ sizing parameter.
+ medium is the default. Passing
+ small you'll get the smaller version
+
+
+
+
+
+
+
Sizing small
+
{{ markupDisabled }}
+
+
+
+
+
+
+
+
diff --git a/packages/ketchup-showcase/src/views/components/basic/textfield/Textfield.vue b/packages/ketchup-showcase/src/views/components/basic/textfield/Textfield.vue
index 5c8d3a515c..948263c9f4 100644
--- a/packages/ketchup-showcase/src/views/components/basic/textfield/Textfield.vue
+++ b/packages/ketchup-showcase/src/views/components/basic/textfield/Textfield.vue
@@ -21,6 +21,15 @@
+
+
+
+
+
+
+
+
+
@@ -32,6 +41,9 @@ import TextfieldLabels from '@/views/components/basic/textfield/examples/Textfie
import TextfieldDisabled from '@/views/components/basic/textfield/examples/TextfieldDisabled';
import TextfieldTextareaVariant from '@/views/components/basic/textfield/examples/TextfieldTextareaVariant';
import TextfieldNumber from '@/views/components/basic/textfield/examples/TextfieldNumber';
+import TextfieldSizing from '@/views/components/basic/textfield/examples/TextfieldSizing';
+import TextfieldHelper from '@/views/components/basic/textfield/examples/TextfieldHelper';
+import TextfieldReadonly from '@/views/components/basic/textfield/examples/TextfieldReadonly';
import Comp from '@/views/templates/Comp';
export default {
components: {
@@ -42,6 +54,9 @@ export default {
TextfieldDisabled,
TextfieldTextareaVariant,
TextfieldNumber,
+ TextfieldSizing,
+ TextfieldHelper,
+ TextfieldReadonly,
Comp,
},
data() {
@@ -57,6 +72,9 @@ export default {
'Text area variant',
'Disabled',
'Number',
+ 'Sizing',
+ 'Helper',
+ 'Readonly',
],
};
},
diff --git a/packages/ketchup-showcase/src/views/components/basic/textfield/examples/TextfieldHelper.vue b/packages/ketchup-showcase/src/views/components/basic/textfield/examples/TextfieldHelper.vue
new file mode 100644
index 0000000000..a0d991b4fd
--- /dev/null
+++ b/packages/ketchup-showcase/src/views/components/basic/textfield/examples/TextfieldHelper.vue
@@ -0,0 +1,63 @@
+
+
+
+
Text fields are supported by error and alert helper. Both 'error' and
+ 'alert' are built with a message plus an icon
+
+
+
+
+
+
+
+
Sample markup with alert message
+
{{ markupBasicAlert }}
+
+
+
+
+
+
+
+
Sample markup with error message
+
{{ markupBasicError }}
+
+
+
+
+
+
diff --git a/packages/ketchup-showcase/src/views/components/basic/textfield/examples/TextfieldNumber.vue b/packages/ketchup-showcase/src/views/components/basic/textfield/examples/TextfieldNumber.vue
index 5581eba3f6..a6892e06ef 100644
--- a/packages/ketchup-showcase/src/views/components/basic/textfield/examples/TextfieldNumber.vue
+++ b/packages/ketchup-showcase/src/views/components/basic/textfield/examples/TextfieldNumber.vue
@@ -51,6 +51,22 @@
separator sample markup
{{ markupGroupNumber }}
+
+ You can also have the possibility to get the 'Plus' and 'Minus'
+ button at the end of input number field by specifing the
+ 'quantity-buttons'.
+
+
+
+ Input number with plus and minus button
+ {{ plusAndMinus }}
@@ -67,6 +83,8 @@ export default {
'',
markupGroupNumber:
'',
+ plusAndMinus:
+ '',
};
},
};
diff --git a/packages/ketchup-showcase/src/views/components/basic/textfield/examples/TextfieldReadonly.vue b/packages/ketchup-showcase/src/views/components/basic/textfield/examples/TextfieldReadonly.vue
new file mode 100644
index 0000000000..5189bd6486
--- /dev/null
+++ b/packages/ketchup-showcase/src/views/components/basic/textfield/examples/TextfieldReadonly.vue
@@ -0,0 +1,50 @@
+
+
+
+
+ There are situation in which the content is not disabled but it's also
+ only on reading. If the field is calculated and/or will never be
+ modified and it's passed in the form, than it's a read only field.
+ read-only renders an unclickable text but
+ it's value is included in form submissions.
+
+
+
+
+
+
+
Disabled sample markup
+
{{ markupReadOnly }}
+
+
+
+
+
+
+
+
diff --git a/packages/ketchup-showcase/src/views/components/basic/textfield/examples/TextfieldSizing.vue b/packages/ketchup-showcase/src/views/components/basic/textfield/examples/TextfieldSizing.vue
new file mode 100644
index 0000000000..d60fa29898
--- /dev/null
+++ b/packages/ketchup-showcase/src/views/components/basic/textfield/examples/TextfieldSizing.vue
@@ -0,0 +1,50 @@
+
+
+
+
Passing the sizing param you can specify
+ the dimension of the field. You can pass small, medium, large or
+ extralarge. The default is medium
+
+
+
+
+
+
+
+
+
+
Sample markup with 'small' sizing
+
{{ markupBasic }}
+
+
+
+
+
+
diff --git a/packages/ketchup-showcase/src/views/framework/kup-debug/examples/KupDebugTester.vue b/packages/ketchup-showcase/src/views/framework/kup-debug/examples/KupDebugTester.vue
index 016159966a..23415062ae 100644
--- a/packages/ketchup-showcase/src/views/framework/kup-debug/examples/KupDebugTester.vue
+++ b/packages/ketchup-showcase/src/views/framework/kup-debug/examples/KupDebugTester.vue
@@ -37,12 +37,12 @@
}
#debug-section {
- border-bottom: 2px solid var(--kup-border-color);
+ border-bottom: 2px solid var(--kup-border-subtle);
padding-bottom: 1em;
}
#debug-wrapper {
- border: 1px solid var(--kup-border-color);
+ border: 1px solid var(--kup-border-subtle);
padding: 0.5em;
}
diff --git a/packages/ketchup-showcase/src/views/framework/kup-dynamic-position/examples/KupDynamicPositionFeatures.vue b/packages/ketchup-showcase/src/views/framework/kup-dynamic-position/examples/KupDynamicPositionFeatures.vue
index 1ec052a4b2..3413361326 100644
--- a/packages/ketchup-showcase/src/views/framework/kup-dynamic-position/examples/KupDynamicPositionFeatures.vue
+++ b/packages/ketchup-showcase/src/views/framework/kup-dynamic-position/examples/KupDynamicPositionFeatures.vue
@@ -252,7 +252,7 @@ export default {
- Material Buttons (widget)
+
+ Material Buttons (widget)
empty:
icon:
@@ -56,29 +61,125 @@ Material Buttons (widget)
icon+tooltip:
+
+
+
+
-
+ Size:
+
+
+
+
+
+ Neutral:
+
+
+
+
+
+
+
+
+ Danger:
+
+
+
+
+
+
+
+
+ Styling:
+
+
+
+
+
+
+
+ All variants:
-
-
-
-
Material Buttons (widget)
label="With tooltip"
icon="favorite"
>
-
-
+
+
-
+ show-spinner="true"
+ >
+
-
+ disabled
+ >
+
-
-
+
+
-
+ show-spinner="true"
+ >
+
-
+ disabled
+ >
+
+
+
+