mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-01-07 07:50:26 +00:00
Move all the card related definitions into their own folder
Perhaps preparatory to making them into a plugin, or putting them into the core
This commit is contained in:
parent
f494daa8dd
commit
5af26067b6
86
editions/tw5.com/tiddlers/cards/card-procedures.tid
Normal file
86
editions/tw5.com/tiddlers/cards/card-procedures.tid
Normal file
@ -0,0 +1,86 @@
|
||||
code-body: yes
|
||||
tags: $:/tags/Macro
|
||||
title: $:/cards/procedures
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\whitespace trim
|
||||
|
||||
\procedure flex-card(class,bordercolor:"",backgroundcolor:"",textcolor:"",imageField:"image",captionField:"caption",subtitle:"",descriptionField:"description",linkField:"link")
|
||||
<$link class={{{ [<class>addprefix[tc-card ]] }}}
|
||||
to={{{ [<currentTiddler>get<linkField>else<currentTiddler>] }}}
|
||||
aria-label=<<currentTiddler>>
|
||||
>
|
||||
<$transclude
|
||||
$variable="flex-card-body"
|
||||
bordercolor=<<bordercolor>>
|
||||
backgroundcolor=<<backgroundcolor>>
|
||||
textcolor=<<textcolor>>
|
||||
imageField=<<imageField>>
|
||||
captionField=<<captionField>>
|
||||
subtitle=<<subtitle>>
|
||||
descriptionField=<<descriptionField>>
|
||||
/>
|
||||
</$link>
|
||||
\end
|
||||
|
||||
\procedure flex-card-external(class,bordercolor:"",backgroundcolor:"",textcolor:"",imageField:"image",captionField:"caption",subtitle:"",descriptionField:"description",linkField:"url")
|
||||
<a class={{{ [<class>addprefix[tc-card ]addprefix[tc-tiddlylink ]] }}}
|
||||
href={{{ [<currentTiddler>get<linkField>] }}}
|
||||
aria-label=<<currentTiddler>>
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
<$transclude
|
||||
$variable="flex-card-body"
|
||||
bordercolor=<<bordercolor>>
|
||||
backgroundcolor=<<backgroundcolor>>
|
||||
textcolor=<<textcolor>>
|
||||
imageField=<<imageField>>
|
||||
captionField=<<captionField>>
|
||||
subtitle=<<subtitle>>
|
||||
descriptionField=<<descriptionField>>
|
||||
/>
|
||||
</a>
|
||||
\end
|
||||
|
||||
\procedure flex-card-body(bordercolor,backgroundcolor,textcolor,imageField,captionField,subtitle,descriptionField)
|
||||
<div class="tc-card-accent" style.borderTop={{{ [<bordercolor>!is[blank]addprefix[5px solid ]] }}} style.background={{!!background}} style.backgroundColor=<<backgroundcolor>> style.color=<<textcolor>> style.fill=<<textcolor>>>
|
||||
<$list filter="[<currentTiddler>has[ribbon-text]]" variable="ignore">
|
||||
<div class="tc-card-ribbon-wrapper" aria-hidden="true">
|
||||
<div class="tc-card-ribbon" style.backgroundColor={{{ [<currentTiddler>get[ribbon-color]else[red]] }}}>
|
||||
<div class="tc-card-ribbon-inner">
|
||||
<$text text={{!!ribbon-text}}/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</$list>
|
||||
<$list filter="[<currentTiddler>has<imageField>]" variable="ignore">
|
||||
<div class="tc-card-image">
|
||||
<$image source={{{ [<currentTiddler>get<imageField>] }}}
|
||||
alt={{{ [<currentTiddler>get<imageField>get[alt-text]else[Image.]] }}}
|
||||
/>
|
||||
</div>
|
||||
</$list>
|
||||
<div class="tc-card-title"><$transclude field=<<captionField>>><$view field="title"/></$transclude></div>
|
||||
<$list filter="[<subtitle>!is[blank]]" variable="ignore">
|
||||
<div class="tc-card-subtitle">
|
||||
<$text text=<<subtitle>>/>
|
||||
</div>
|
||||
</$list>
|
||||
<div class="tc-card-icon"><$transclude tiddler={{!!icon}}/></div>
|
||||
<%if [all[current]get<descriptionField>else[]!match[]] %>
|
||||
<div class="tc-card-body-wrapper">
|
||||
<div class="tc-card-body">
|
||||
<$transclude field=<<descriptionField>> mode="block"/>
|
||||
</div>
|
||||
<div class="tc-card-body-clear">
|
||||
</div>
|
||||
</div>
|
||||
<%endif%>
|
||||
<%if [all[current]has[button-text]] %>
|
||||
<div class="tc-card-button" style.background-color={{!!button-color}} style.border-color={{!!button-color}}>
|
||||
<$text text={{!!button-text}}/> {{$:/core/images/chevron-right}}
|
||||
</div>
|
||||
<%endif%>
|
||||
</div>
|
||||
\end
|
248
editions/tw5.com/tiddlers/cards/card-styles.tid
Normal file
248
editions/tw5.com/tiddlers/cards/card-styles.tid
Normal file
@ -0,0 +1,248 @@
|
||||
tags: $:/tags/Stylesheet
|
||||
title: $:/cards/styles
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock
|
||||
|
||||
.tc-cards {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-evenly;
|
||||
width: 100%;
|
||||
padding: 0.5em;
|
||||
background: <<colour background>>;
|
||||
border-color: rgba(34,36,38,.15);
|
||||
box-shadow: 0 2px 25px 0 rgb(34 36 38 / 5%) inset;
|
||||
gap: 1em;
|
||||
}
|
||||
|
||||
.tc-cards.tc-small {
|
||||
text-align: center;
|
||||
font-size: 0.7em;
|
||||
}
|
||||
|
||||
.tc-cards.tc-action-card {
|
||||
text-align: center;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.tc-cards.tc-cards-vertical {
|
||||
}
|
||||
|
||||
.tc-cards.tc-action-card .tc-card-button {
|
||||
border: 1px solid <<colour foreground>>;
|
||||
background: <<colour foreground>>;
|
||||
margin: 0.5em;
|
||||
border-radius: 6px;
|
||||
padding: 0.5em;
|
||||
color: <<colour background>>;
|
||||
fill: <<colour background>>;
|
||||
}
|
||||
|
||||
.tc-cards.tc-action-card .tc-card-button svg {
|
||||
width: 0.65em;
|
||||
height: 0.65em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card {
|
||||
font-weight: normal;
|
||||
flex-grow: 1;
|
||||
max-width: 250px;
|
||||
position: relative;
|
||||
background: <<colour background>>;
|
||||
color: <<colour foreground>>;
|
||||
width: 200px;
|
||||
min-height: 0;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 1px 3px 0 #d4d4d5, 0 0 0 1px #d4d4d5;
|
||||
transition: box-shadow 0.3s ease,transform .3s ease;
|
||||
}
|
||||
|
||||
.tc-cards.tc-cards-vertical .tc-tiddlylink.tc-card {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@media (max-width: 500px) {
|
||||
|
||||
.tc-cards {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card {
|
||||
margin: 0.25em;
|
||||
width: 45%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card.tc-card-quote {
|
||||
width: 320px;
|
||||
box-shadow: none;
|
||||
background-color: #effdff;
|
||||
}
|
||||
|
||||
.tc-card-accent {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
flex-direction: column;
|
||||
justify-content: stretch;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.tc-cards.tc-cards-vertical .tc-card-accent {
|
||||
flex-direction: row;
|
||||
justify-content: start;
|
||||
padding: 5px 7px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.tc-cards.tc-cards-vertical .tc-card-icon {
|
||||
line-height: 0;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card:hover {
|
||||
color: <<colour foreground>>;
|
||||
background: <<colour notification-background>>;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
box-shadow: 0 1px 5px 0 #bcbdbd, 0 0 0 1px #d4d4d5;
|
||||
transform: translateY(-3px);
|
||||
}
|
||||
|
||||
.tc-card-ribbon-wrapper {
|
||||
line-height: 0;
|
||||
width: 75px;
|
||||
height: 75px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
overflow: hidden;
|
||||
top: 0;
|
||||
z-index: 849;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.tc-card-ribbon {
|
||||
transition: top 0.3s ease-in-out;
|
||||
top: 15px;
|
||||
right: -77px;
|
||||
position: absolute;
|
||||
transform: rotate(45deg);
|
||||
background-color: red;
|
||||
box-shadow: 0px 0px 2px 0px rgb(0 0 0 / 50%);
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card:hover .tc-card-ribbon {
|
||||
top: -77px;
|
||||
}
|
||||
|
||||
.tc-card-ribbon-inner {
|
||||
font-size: 10px;
|
||||
line-height: 13px;
|
||||
font-weight: 700;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 -1px rgb(0 0 0 / 50%);
|
||||
width: 200px;
|
||||
display: inline-block;
|
||||
padding: 2px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tc-card-image {
|
||||
border-top-left-radius: 8px;
|
||||
border-top-right-radius: 8px;
|
||||
line-height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tc-card-image img {
|
||||
border-top-left-radius: 8px;
|
||||
border-top-right-radius: 8px;
|
||||
width: 100%;
|
||||
transition: transform 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card:hover .tc-card-image img {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
.tc-card-title {
|
||||
font-size: 1.2em;
|
||||
line-height: 1.2;
|
||||
font-weight: 600;
|
||||
transition: color 0.3s ease-in-out;
|
||||
padding: 0 10px;
|
||||
margin: 0.5em 0 0.25em 0;
|
||||
}
|
||||
|
||||
.tc-cards.tc-cards-vertical .tc-card-title {
|
||||
font-size: 1.1em;
|
||||
min-width: 10em;
|
||||
order: 2;
|
||||
}
|
||||
|
||||
.tc-cards.tc-cards-vertical .tc-card-title svg {
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
|
||||
.tc-card-subtitle,
|
||||
.tc-card-author {
|
||||
font-size: 0.8em;
|
||||
line-height: 1.2;
|
||||
color: <<colour muted-foreground>>;
|
||||
padding: 0 10px;
|
||||
margin: 0.5em 0;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.tc-card-body {
|
||||
font-size: 0.9em;
|
||||
line-height: 1.2;
|
||||
padding: 0.25em 10px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.tc-cards.tc-cards-vertical .tc-card-body {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.tc-card-body-wrapper {
|
||||
position: relative;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card.tc-card-quote .tc-card-body:before {
|
||||
font-family: Georgia, serif;
|
||||
color: <<colour blockquote-bar>>;
|
||||
content: open-quote;
|
||||
font-size: 5em;
|
||||
line-height: 1;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card.tc-card-quote .tc-card-body:after {
|
||||
font-family: Georgia, serif;
|
||||
color: <<colour blockquote-bar>>;
|
||||
content: close-quote;
|
||||
font-size: 5em;
|
||||
line-height: 1;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card .tc-card-body-clear {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.tc-card-body > p {
|
||||
margin: 0.25em 0;
|
||||
}
|
||||
|
||||
.tc-card a:active, .tc-card a:focus, .tc-btn-download:active, .tc-btn-download:focus{
|
||||
outline: none;
|
||||
}
|
@ -8,6 +8,6 @@ Click here to download an empty copy of ~TiddlyWiki: {{$:/editions/tw5.com/snipp
|
||||
|
||||
The next step is to choose a method for saving changes. There is a wide variety of methods available, with different features and limitations. Click on the badge for a method to see more information about it. You can also click on one of the platform filters to restrict the listing to methods that work with that platform.
|
||||
|
||||
<<.warning "Do not attempt to use the browser ''File''/''Save'' menu option to save changes (it does not work expected)">>
|
||||
<<.warning "Do not attempt to use the browser ''File''/''Save'' menu option to save changes (it does not work as expected)">>
|
||||
|
||||
{{Saving}}
|
||||
|
@ -2,7 +2,7 @@ title: Quick Start
|
||||
modified: 20241001141521924
|
||||
list: [[Quick Start: Tiddlyhost]] [[Quick Start: Desktop]] [[Quick Start: DIY]] [[Quick Start: Xememex]]
|
||||
icon: $:/core/images/tip
|
||||
color: #999
|
||||
color: #cc9
|
||||
|
||||
Choose how to get started quickly with ~TiddlyWiki.
|
||||
|
||||
|
@ -8,6 +8,6 @@ type: text/vnd.tiddlywiki
|
||||
|
||||
<div class="tc-cards">
|
||||
<$list filter="[tag[Saving]sort[caption]]">
|
||||
{{||$:/_tw5.com-card-template}}
|
||||
<$macrocall $name="flex-card" bordercolor={{!!color}} captionField="caption" subtitle={{{ [{!!community-author}!is[blank]addprefix[by ]] }}}/>
|
||||
</$list>
|
||||
</div>
|
||||
|
@ -1,6 +0,0 @@
|
||||
created: 20200507002521489
|
||||
modified: 20220719134613555
|
||||
title: $:/_tw5.com-card-template
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
<$macrocall $name="flex-card" bordercolor={{!!color}} captionField="caption" subtitle={{{ [{!!community-author}!is[blank]addprefix[by ]] }}}/>
|
@ -86,255 +86,10 @@ type: text/vnd.tiddlywiki
|
||||
height: 1em;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.tc-wrapper-flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.tc-cards {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-evenly;
|
||||
width: 100%;
|
||||
padding: 0.5em;
|
||||
background: <<colour background>>;
|
||||
border-color: rgba(34,36,38,.15);
|
||||
box-shadow: 0 2px 25px 0 rgb(34 36 38 / 5%) inset;
|
||||
gap: 1em;
|
||||
}
|
||||
|
||||
.tc-cards.tc-small {
|
||||
text-align: center;
|
||||
font-size: 0.7em;
|
||||
}
|
||||
|
||||
.tc-cards.tc-action-card {
|
||||
text-align: center;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.tc-cards.tc-cards-vertical {
|
||||
}
|
||||
|
||||
.tc-cards.tc-action-card .tc-card-button {
|
||||
border: 1px solid <<colour foreground>>;
|
||||
background: <<colour foreground>>;
|
||||
margin: 0.5em;
|
||||
border-radius: 6px;
|
||||
padding: 0.5em;
|
||||
color: <<colour background>>;
|
||||
fill: <<colour background>>;
|
||||
}
|
||||
|
||||
.tc-cards.tc-action-card .tc-card-button svg {
|
||||
width: 0.65em;
|
||||
height: 0.65em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card {
|
||||
font-weight: normal;
|
||||
flex-grow: 1;
|
||||
max-width: 250px;
|
||||
position: relative;
|
||||
background: <<colour background>>;
|
||||
color: <<colour foreground>>;
|
||||
width: 200px;
|
||||
min-height: 0;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 1px 3px 0 #d4d4d5, 0 0 0 1px #d4d4d5;
|
||||
transition: box-shadow 0.3s ease,transform .3s ease;
|
||||
}
|
||||
|
||||
.tc-cards.tc-cards-vertical .tc-tiddlylink.tc-card {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@media (max-width: 500px) {
|
||||
|
||||
.tc-cards {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card {
|
||||
margin: 0.25em;
|
||||
width: 45%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card.tc-card-quote {
|
||||
width: 320px;
|
||||
box-shadow: none;
|
||||
background-color: #effdff;
|
||||
}
|
||||
|
||||
.tc-card-accent {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
flex-direction: column;
|
||||
justify-content: stretch;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.tc-cards.tc-cards-vertical .tc-card-accent {
|
||||
flex-direction: row;
|
||||
justify-content: start;
|
||||
padding: 5px 7px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.tc-cards.tc-cards-vertical .tc-card-icon {
|
||||
line-height: 0;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card:hover {
|
||||
color: <<colour foreground>>;
|
||||
background: <<colour notification-background>>;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
box-shadow: 0 1px 5px 0 #bcbdbd, 0 0 0 1px #d4d4d5;
|
||||
transform: translateY(-3px);
|
||||
}
|
||||
|
||||
.tc-card-ribbon-wrapper {
|
||||
line-height: 0;
|
||||
width: 75px;
|
||||
height: 75px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
overflow: hidden;
|
||||
top: 0;
|
||||
z-index: 849;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.tc-card-ribbon {
|
||||
transition: top 0.3s ease-in-out;
|
||||
top: 15px;
|
||||
right: -77px;
|
||||
position: absolute;
|
||||
transform: rotate(45deg);
|
||||
background-color: red;
|
||||
box-shadow: 0px 0px 2px 0px rgb(0 0 0 / 50%);
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card:hover .tc-card-ribbon {
|
||||
top: -77px;
|
||||
}
|
||||
|
||||
.tc-card-ribbon-inner {
|
||||
font-size: 10px;
|
||||
line-height: 13px;
|
||||
font-weight: 700;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 -1px rgb(0 0 0 / 50%);
|
||||
width: 200px;
|
||||
display: inline-block;
|
||||
padding: 2px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tc-card-image {
|
||||
border-top-left-radius: 8px;
|
||||
border-top-right-radius: 8px;
|
||||
line-height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tc-card-image img {
|
||||
border-top-left-radius: 8px;
|
||||
border-top-right-radius: 8px;
|
||||
width: 100%;
|
||||
transition: transform 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card:hover .tc-card-image img {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
.tc-card-title {
|
||||
font-size: 1.2em;
|
||||
line-height: 1.2;
|
||||
font-weight: 600;
|
||||
transition: color 0.3s ease-in-out;
|
||||
padding: 0 10px;
|
||||
margin: 0.5em 0 0.25em 0;
|
||||
}
|
||||
|
||||
.tc-cards.tc-cards-vertical .tc-card-title {
|
||||
font-size: 1.1em;
|
||||
min-width: 10em;
|
||||
order: 2;
|
||||
}
|
||||
|
||||
.tc-cards.tc-cards-vertical .tc-card-title svg {
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
|
||||
.tc-card-subtitle,
|
||||
.tc-card-author {
|
||||
font-size: 0.8em;
|
||||
line-height: 1.2;
|
||||
color: <<colour muted-foreground>>;
|
||||
padding: 0 10px;
|
||||
margin: 0.5em 0;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.tc-card-body {
|
||||
font-size: 0.9em;
|
||||
line-height: 1.2;
|
||||
padding: 0.25em 10px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.tc-cards.tc-cards-vertical .tc-card-body {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.tc-card-body-wrapper {
|
||||
position: relative;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card.tc-card-quote .tc-card-body:before {
|
||||
font-family: Georgia, serif;
|
||||
color: <<colour blockquote-bar>>;
|
||||
content: open-quote;
|
||||
font-size: 5em;
|
||||
line-height: 1;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card.tc-card-quote .tc-card-body:after {
|
||||
font-family: Georgia, serif;
|
||||
color: <<colour blockquote-bar>>;
|
||||
content: close-quote;
|
||||
font-size: 5em;
|
||||
line-height: 1;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card .tc-card-body-clear {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.tc-card-body > p {
|
||||
margin: 0.25em 0;
|
||||
}
|
||||
|
||||
.tc-card a:active, .tc-card a:focus, .tc-btn-download:active, .tc-btn-download:focus{
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.tc-btn-download {
|
||||
padding: 10px 30px;
|
||||
border-radius: 5px;
|
||||
|
@ -87,83 +87,3 @@ type: text/vnd.tiddlywiki
|
||||
<$link to=<<tiddler>>/>:
|
||||
<$transclude $variable=tw-code tiddler=<<tiddler>> />
|
||||
\end
|
||||
|
||||
\procedure flex-card(class,bordercolor:"",backgroundcolor:"",textcolor:"",imageField:"image",captionField:"caption",subtitle:"",descriptionField:"description",linkField:"link")
|
||||
<$link class={{{ [<class>addprefix[tc-card ]] }}}
|
||||
to={{{ [<currentTiddler>get<linkField>else<currentTiddler>] }}}
|
||||
aria-label=<<currentTiddler>>
|
||||
>
|
||||
<$transclude
|
||||
$variable="flex-card-body"
|
||||
bordercolor=<<bordercolor>>
|
||||
backgroundcolor=<<backgroundcolor>>
|
||||
textcolor=<<textcolor>>
|
||||
imageField=<<imageField>>
|
||||
captionField=<<captionField>>
|
||||
subtitle=<<subtitle>>
|
||||
descriptionField=<<descriptionField>>
|
||||
/>
|
||||
</$link>
|
||||
\end
|
||||
|
||||
\procedure flex-card-external(class,bordercolor:"",backgroundcolor:"",textcolor:"",imageField:"image",captionField:"caption",subtitle:"",descriptionField:"description",linkField:"url")
|
||||
<a class={{{ [<class>addprefix[tc-card ]addprefix[tc-tiddlylink ]] }}}
|
||||
href={{{ [<currentTiddler>get<linkField>] }}}
|
||||
aria-label=<<currentTiddler>>
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
<$transclude
|
||||
$variable="flex-card-body"
|
||||
bordercolor=<<bordercolor>>
|
||||
backgroundcolor=<<backgroundcolor>>
|
||||
textcolor=<<textcolor>>
|
||||
imageField=<<imageField>>
|
||||
captionField=<<captionField>>
|
||||
subtitle=<<subtitle>>
|
||||
descriptionField=<<descriptionField>>
|
||||
/>
|
||||
</a>
|
||||
\end
|
||||
|
||||
\procedure flex-card-body(bordercolor,backgroundcolor,textcolor,imageField,captionField,subtitle,descriptionField)
|
||||
<div class="tc-card-accent" style.borderTop={{{ [<bordercolor>!is[blank]addprefix[5px solid ]] }}} style.background={{!!background}} style.backgroundColor=<<backgroundcolor>> style.color=<<textcolor>> style.fill=<<textcolor>>>
|
||||
<$list filter="[<currentTiddler>has[ribbon-text]]" variable="ignore">
|
||||
<div class="tc-card-ribbon-wrapper" aria-hidden="true">
|
||||
<div class="tc-card-ribbon" style.backgroundColor={{{ [<currentTiddler>get[ribbon-color]else[red]] }}}>
|
||||
<div class="tc-card-ribbon-inner">
|
||||
<$text text={{!!ribbon-text}}/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</$list>
|
||||
<$list filter="[<currentTiddler>has<imageField>]" variable="ignore">
|
||||
<div class="tc-card-image">
|
||||
<$image source={{{ [<currentTiddler>get<imageField>] }}}
|
||||
alt={{{ [<currentTiddler>get<imageField>get[alt-text]else[Image.]] }}}
|
||||
/>
|
||||
</div>
|
||||
</$list>
|
||||
<div class="tc-card-title"><$transclude field=<<captionField>>><$view field="title"/></$transclude></div>
|
||||
<$list filter="[<subtitle>!is[blank]]" variable="ignore">
|
||||
<div class="tc-card-subtitle">
|
||||
<$text text=<<subtitle>>/>
|
||||
</div>
|
||||
</$list>
|
||||
<div class="tc-card-icon"><$transclude tiddler={{!!icon}}/></div>
|
||||
<%if [all[current]get<descriptionField>else[]!match[]] %>
|
||||
<div class="tc-card-body-wrapper">
|
||||
<div class="tc-card-body">
|
||||
<$transclude field=<<descriptionField>> mode="block"/>
|
||||
</div>
|
||||
<div class="tc-card-body-clear">
|
||||
</div>
|
||||
</div>
|
||||
<%endif%>
|
||||
<%if [all[current]has[button-text]] %>
|
||||
<div class="tc-card-button" style.background-color={{!!button-color}} style.border-color={{!!button-color}}>
|
||||
<$text text={{!!button-text}}/> {{$:/core/images/chevron-right}}
|
||||
</div>
|
||||
<%endif%>
|
||||
</div>
|
||||
\end
|
||||
|
Loading…
Reference in New Issue
Block a user