crayon-design-system-ui 0.0.1
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/README.md +487 -0
- package/dist/angular/index.d.ts +614 -0
- package/dist/angular/index.d.ts.map +1 -0
- package/dist/angular/index.js +209 -0
- package/dist/assets/attributes-o88QCNuy.js +1 -0
- package/dist/assets/custom-element-CN6vLcFC.js +2 -0
- package/dist/assets/each-DkX3FjFL.js +1 -0
- package/dist/assets/if-DdiIl-sg.js +1 -0
- package/dist/assets/index-client-CiUbrQq_.js +1 -0
- package/dist/assets/lifecycle-BK5NY8qp.js +2 -0
- package/dist/assets/props-DbUVX42-.js +1 -0
- package/dist/assets/slot-CRFQJtYY.js +1 -0
- package/dist/assets/this-DllEouAd.js +1 -0
- package/dist/components/accordion/Accordion.d.ts +1 -0
- package/dist/components/accordion/Accordion.js +5 -0
- package/dist/components/accordion/Accordion.svelte +203 -0
- package/dist/components/accordion/Accordion.svelte.d.ts +19 -0
- package/dist/components/accordion-item/AccordionItem.d.ts +1 -0
- package/dist/components/accordion-item/AccordionItem.js +3 -0
- package/dist/components/accordion-item/AccordionItem.svelte +159 -0
- package/dist/components/accordion-item/AccordionItem.svelte.d.ts +18 -0
- package/dist/components/avatar/Avatar.d.ts +1 -0
- package/dist/components/avatar/Avatar.js +4 -0
- package/dist/components/avatar/Avatar.svelte +132 -0
- package/dist/components/avatar/Avatar.svelte.d.ts +24 -0
- package/dist/components/button/Button.d.ts +1 -0
- package/dist/components/button/Button.js +35 -0
- package/dist/components/button/Button.svelte +254 -0
- package/dist/components/button/Button.svelte.d.ts +31 -0
- package/dist/components/card/Card.d.ts +1 -0
- package/dist/components/card/Card.js +29 -0
- package/dist/components/card/Card.svelte +244 -0
- package/dist/components/card/Card.svelte.d.ts +27 -0
- package/dist/components/checkbox/Checkbox.d.ts +1 -0
- package/dist/components/checkbox/Checkbox.js +23 -0
- package/dist/components/checkbox/Checkbox.svelte +196 -0
- package/dist/components/checkbox/Checkbox.svelte.d.ts +28 -0
- package/dist/components/form/Form.d.ts +1 -0
- package/dist/components/form/Form.js +4 -0
- package/dist/components/form/Form.svelte +54 -0
- package/dist/components/form/Form.svelte.d.ts +29 -0
- package/dist/components/form-select/FormSelect.d.ts +1 -0
- package/dist/components/form-select/FormSelect.js +20 -0
- package/dist/components/form-select/FormSelect.svelte +244 -0
- package/dist/components/form-select/FormSelect.svelte.d.ts +41 -0
- package/dist/components/form-select/FormSelectOption.d.ts +1 -0
- package/dist/components/form-select/FormSelectOption.js +3 -0
- package/dist/components/form-select/FormSelectOption.svelte +10 -0
- package/dist/components/form-select/FormSelectOption.svelte.d.ts +20 -0
- package/dist/components/input/Input.d.ts +1 -0
- package/dist/components/input/Input.js +24 -0
- package/dist/components/input/Input.svelte +429 -0
- package/dist/components/input/Input.svelte.d.ts +48 -0
- package/dist/components/label/Label.d.ts +1 -0
- package/dist/components/label/Label.js +3 -0
- package/dist/components/label/Label.svelte +74 -0
- package/dist/components/label/Label.svelte.d.ts +23 -0
- package/dist/components/radio/Radio.d.ts +1 -0
- package/dist/components/radio/Radio.js +16 -0
- package/dist/components/radio/Radio.svelte +147 -0
- package/dist/components/radio/Radio.svelte.d.ts +26 -0
- package/dist/components/textarea/Textarea.d.ts +1 -0
- package/dist/components/textarea/Textarea.js +5 -0
- package/dist/components/textarea/Textarea.svelte +122 -0
- package/dist/components/textarea/Textarea.svelte.d.ts +34 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +13 -0
- package/dist/react/index.d.ts +24 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +26 -0
- package/dist/register/accordion-item.d.ts +1 -0
- package/dist/register/accordion-item.js +4 -0
- package/dist/register/accordion.d.ts +1 -0
- package/dist/register/accordion.js +4 -0
- package/dist/register/avatar.d.ts +1 -0
- package/dist/register/avatar.js +4 -0
- package/dist/register/button.d.ts +1 -0
- package/dist/register/button.js +4 -0
- package/dist/register/card.d.ts +1 -0
- package/dist/register/card.js +4 -0
- package/dist/register/checkbox.d.ts +1 -0
- package/dist/register/checkbox.js +4 -0
- package/dist/register/form-select-option.d.ts +1 -0
- package/dist/register/form-select-option.js +4 -0
- package/dist/register/form-select.d.ts +1 -0
- package/dist/register/form-select.js +4 -0
- package/dist/register/form.d.ts +1 -0
- package/dist/register/form.js +4 -0
- package/dist/register/input.d.ts +1 -0
- package/dist/register/input.js +4 -0
- package/dist/register/label.d.ts +1 -0
- package/dist/register/label.js +4 -0
- package/dist/register/radio.d.ts +1 -0
- package/dist/register/radio.js +4 -0
- package/dist/register/textarea.d.ts +1 -0
- package/dist/register/textarea.js +4 -0
- package/dist/register.d.ts +1 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +18 -0
- package/dist/tokens.css +184 -0
- package/dist-browser/assets/Accordion-CwOMoX3u.js +3 -0
- package/dist-browser/assets/AccordionItem-CuTFqdt6.js +1 -0
- package/dist-browser/assets/Avatar-Ct0ZUf_m.js +2 -0
- package/dist-browser/assets/Button-BvYyhPrn.js +33 -0
- package/dist-browser/assets/Card-DM0rPY9s.js +27 -0
- package/dist-browser/assets/Checkbox-DK1LWC1i.js +21 -0
- package/dist-browser/assets/Form-BZFKnk3f.js +2 -0
- package/dist-browser/assets/FormSelect-CBTpNNrh.js +18 -0
- package/dist-browser/assets/FormSelectOption-DhOxPDjS.js +1 -0
- package/dist-browser/assets/Input-DZZF_45U.js +22 -0
- package/dist-browser/assets/Label-BX3_KNGn.js +1 -0
- package/dist-browser/assets/Radio-Bwape_rC.js +14 -0
- package/dist-browser/assets/Textarea-BYsLYgK4.js +3 -0
- package/dist-browser/assets/attributes-BN21YWvK.js +1 -0
- package/dist-browser/assets/custom-element-vZIc-tZM.js +2 -0
- package/dist-browser/assets/each-CDVyljdy.js +1 -0
- package/dist-browser/assets/if-B3xMWYuB.js +1 -0
- package/dist-browser/assets/index-client-BMTknfvN.js +1 -0
- package/dist-browser/assets/lifecycle-BSCLFPkh.js +2 -0
- package/dist-browser/assets/props-DClXGNhw.js +1 -0
- package/dist-browser/assets/slot-Btw_EhJQ.js +1 -0
- package/dist-browser/assets/this-CobEtPHm.js +1 -0
- package/dist-browser/bundle.js +2 -0
- package/dist-browser/tokens.css +184 -0
- package/package.json +89 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import{c as G,p as J,g as o,l as K,d as y,a as P,e as m,t as Q,i as W,j as X,s as a,m as t,k as Y,b as d,n as _,r as i}from"../../assets/custom-element-CN6vLcFC.js";import{o as Z}from"../../assets/index-client-CiUbrQq_.js";import{s as l}from"../../assets/slot-CRFQJtYY.js";import{a as $,i as rr,s as n,c as er}from"../../assets/lifecycle-BK5NY8qp.js";import{b as or}from"../../assets/this-DllEouAd.js";import{p as k}from"../../assets/props-DbUVX42-.js";var ar=Y('<div><div><!></div> <div><!></div> <div class="card-body svelte-18poi8p"><!></div> <div><!></div> <div><!></div></div>');const tr={hash:"svelte-18poi8p",code:`.card-root.svelte-18poi8p {position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;font-family:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:var(--ui-card-font-size, 14px);line-height:1.5;color:var(--ui-card-color, #212529);background-color:var(--ui-card-bg, #fff);border:var(--ui-card-border-width, 1px) solid\r
|
|
2
|
+
var(--ui-card-border-color, rgba(0, 0, 0, 0.125));border-radius:var(--ui-card-border-radius, 8px);box-shadow:var(--ui-card-box-shadow, none);}\r
|
|
3
|
+
\r
|
|
4
|
+
/* Variants: default uses CSS vars above; others set bg + border + color */.card-root.variant-primary.svelte-18poi8p {background-color:var(--ui-card-primary-bg, #0d6efd);border-color:var(--ui-card-primary-border, #0d6efd);color:var(--ui-card-primary-color, #fff);}.card-root.variant-secondary.svelte-18poi8p {background-color:var(--ui-card-secondary-bg, #6c757d);border-color:var(--ui-card-secondary-border, #6c757d);color:var(--ui-card-secondary-color, #fff);}.card-root.variant-success.svelte-18poi8p {background-color:var(--ui-card-success-bg, #198754);border-color:var(--ui-card-success-border, #198754);color:var(--ui-card-success-color, #fff);}.card-root.variant-danger.svelte-18poi8p {background-color:var(--ui-card-danger-bg, #dc3545);border-color:var(--ui-card-danger-border, #dc3545);color:var(--ui-card-danger-color, #fff);}.card-root.variant-warning.svelte-18poi8p {background-color:var(--ui-card-warning-bg, #ffc107);border-color:var(--ui-card-warning-border, #ffc107);color:var(--ui-card-warning-color, #000);}.card-root.variant-info.svelte-18poi8p {background-color:var(--ui-card-info-bg, #0dcaf0);border-color:var(--ui-card-info-border, #0dcaf0);color:var(--ui-card-info-color, #000);}.card-root.variant-light.svelte-18poi8p {background-color:var(--ui-card-light-bg, #f8f9fa);border-color:var(--ui-card-light-border, #e9ecef);color:var(--ui-card-light-color, #212529);}.card-root.variant-dark.svelte-18poi8p {background-color:var(--ui-card-dark-bg, #212529);border-color:var(--ui-card-dark-border, #212529);color:var(--ui-card-dark-color, #fff);}\r
|
|
5
|
+
\r
|
|
6
|
+
/* Text alignment */.card-root.text-start.svelte-18poi8p {text-align:start;}.card-root.text-center.svelte-18poi8p {text-align:center;}.card-root.text-end.svelte-18poi8p {text-align:end;}.card-header.svelte-18poi8p {padding:var(--ui-card-header-padding-y, 0.5rem) var(--ui-card-header-padding-x, 1rem);margin-bottom:0;background-color:var(--ui-card-header-bg, rgba(0, 0, 0, 0.03));border-bottom:var(--ui-card-border-width, 1px) solid\r
|
|
7
|
+
var(--ui-card-border-color, rgba(0, 0, 0, 0.125));border-radius:calc(var(--ui-card-border-radius, 8px) - 1px) calc(var(--ui-card-border-radius, 8px) - 1px) 0 0;}.card-root.variant-default.svelte-18poi8p .card-header:where(.svelte-18poi8p) {background-color:var(--ui-card-header-bg, rgba(0, 0, 0, 0.03));}.card-root.variant-primary.svelte-18poi8p .card-header:where(.svelte-18poi8p),\r
|
|
8
|
+
.card-root.variant-secondary.svelte-18poi8p .card-header:where(.svelte-18poi8p),\r
|
|
9
|
+
.card-root.variant-success.svelte-18poi8p .card-header:where(.svelte-18poi8p),\r
|
|
10
|
+
.card-root.variant-danger.svelte-18poi8p .card-header:where(.svelte-18poi8p),\r
|
|
11
|
+
.card-root.variant-warning.svelte-18poi8p .card-header:where(.svelte-18poi8p),\r
|
|
12
|
+
.card-root.variant-info.svelte-18poi8p .card-header:where(.svelte-18poi8p),\r
|
|
13
|
+
.card-root.variant-dark.svelte-18poi8p .card-header:where(.svelte-18poi8p) {background-color:rgba(0, 0, 0, 0.2);border-bottom-color:rgba(255, 255, 255, 0.2);}.card-header.svelte-18poi8p:not(.has-content) {display:none;}.card-body.svelte-18poi8p {flex:1 1 auto;padding:var(--ui-card-body-padding-y, 1rem) var(--ui-card-body-padding-x, 1rem);}.card-body.svelte-18poi8p :where(.svelte-18poi8p)::slotted(h1),\r
|
|
14
|
+
.card-body.svelte-18poi8p :where(.svelte-18poi8p)::slotted(h2),\r
|
|
15
|
+
.card-body.svelte-18poi8p :where(.svelte-18poi8p)::slotted(h3),\r
|
|
16
|
+
.card-body.svelte-18poi8p :where(.svelte-18poi8p)::slotted(h4),\r
|
|
17
|
+
.card-body.svelte-18poi8p :where(.svelte-18poi8p)::slotted(h5),\r
|
|
18
|
+
.card-body.svelte-18poi8p :where(.svelte-18poi8p)::slotted(h6) {margin-top:0;margin-bottom:var(--ui-card-title-margin-bottom, 0.5rem);font-size:var(--ui-card-title-font-size, 1.25rem);font-weight:500;line-height:1.2;}.card-body.svelte-18poi8p :where(.svelte-18poi8p)::slotted(p) {margin-top:0;margin-bottom:var(--ui-card-text-margin-bottom, 0.5rem);}.card-body.svelte-18poi8p :where(.svelte-18poi8p)::slotted(p:last-child) {margin-bottom:0;}.card-footer.svelte-18poi8p {padding:var(--ui-card-footer-padding-y, 0.5rem) var(--ui-card-footer-padding-x, 1rem);background-color:var(--ui-card-footer-bg, rgba(0, 0, 0, 0.03));border-top:var(--ui-card-border-width, 1px) solid\r
|
|
19
|
+
var(--ui-card-border-color, rgba(0, 0, 0, 0.125));border-radius:0 0 calc(var(--ui-card-border-radius, 8px) - 1px)\r
|
|
20
|
+
calc(var(--ui-card-border-radius, 8px) - 1px);}.card-root.variant-primary.svelte-18poi8p .card-footer:where(.svelte-18poi8p),\r
|
|
21
|
+
.card-root.variant-secondary.svelte-18poi8p .card-footer:where(.svelte-18poi8p),\r
|
|
22
|
+
.card-root.variant-success.svelte-18poi8p .card-footer:where(.svelte-18poi8p),\r
|
|
23
|
+
.card-root.variant-danger.svelte-18poi8p .card-footer:where(.svelte-18poi8p),\r
|
|
24
|
+
.card-root.variant-warning.svelte-18poi8p .card-footer:where(.svelte-18poi8p),\r
|
|
25
|
+
.card-root.variant-info.svelte-18poi8p .card-footer:where(.svelte-18poi8p),\r
|
|
26
|
+
.card-root.variant-dark.svelte-18poi8p .card-footer:where(.svelte-18poi8p) {background-color:rgba(0, 0, 0, 0.2);border-top-color:rgba(255, 255, 255, 0.2);}.card-footer.svelte-18poi8p:not(.has-content) {display:none;}.card-img-top-wrapper.svelte-18poi8p:not(.has-content),\r
|
|
27
|
+
.card-img-bottom-wrapper.svelte-18poi8p:not(.has-content) {display:none;}.card-img-top-wrapper.has-content.svelte-18poi8p {overflow:hidden;border-top-left-radius:var(--ui-card-border-radius, 8px);border-top-right-radius:var(--ui-card-border-radius, 8px);}.card-img-top-wrapper.has-content.svelte-18poi8p :where(.svelte-18poi8p)::slotted(img) {display:block;width:100%;height:auto;object-fit:cover;}.card-img-bottom-wrapper.has-content.svelte-18poi8p {overflow:hidden;border-bottom-left-radius:var(--ui-card-border-radius, 8px);border-bottom-right-radius:var(--ui-card-border-radius, 8px);}.card-img-bottom-wrapper.has-content.svelte-18poi8p :where(.svelte-18poi8p)::slotted(img) {display:block;width:100%;height:auto;object-fit:cover;}`};function dr(S,e){J(e,!1),$(S,tr);const C=t();let p=k(e,"variant",12,"default"),v=k(e,"textAlign",12,"start"),u=k(e,"extraClass",12,""),s=t(),N=t(!1),A=t(!1),I=t(!1),q=t(!1);function z(){if(!o(s))return;const r=o(s).getRootNode();if(!r)return;const T=r.querySelector('slot[name="header"]'),f=r.querySelector('slot[name="footer"]'),U=r.querySelector('slot[name="image-top"]'),D=r.querySelector('slot[name="image-bottom"]');a(N,(T?.assignedNodes().length??0)>0),a(A,(f?.assignedNodes().length??0)>0),a(I,(U?.assignedNodes().length??0)>0),a(q,(D?.assignedNodes().length??0)>0)}Z(()=>{z();const r=new MutationObserver(z),f=o(s)?.getRootNode()?.host;return f&&r.observe(f,{childList:!0,subtree:!0}),()=>r.disconnect()}),K(()=>(y(p()),y(v()),y(u())),()=>{a(C,`card-root variant-${p()} text-${v()} ${u()}`.trim())}),P();var E={get variant(){return p()},set variant(r){p(r),_()},get textAlign(){return v()},set textAlign(r){v(r),_()},get extraClass(){return u()},set extraClass(r){u(r),_()}};rr();var c=ar(),b=d(c);let j;var H=d(b);l(H,e,"image-top",{},null),i(b);var g=m(b,2);let B;var R=d(g);l(R,e,"header",{},null),i(g);var w=m(g,2),V=d(w);l(V,e,"default",{},null),i(w);var h=m(w,2);let F;var L=d(h);l(L,e,"footer",{},null),i(h);var x=m(h,2);let M;var O=d(x);return l(O,e,"image-bottom",{},null),i(x),i(c),or(c,r=>a(s,r),()=>o(s)),Q(()=>{n(c,1,er(o(C)),"svelte-18poi8p"),j=n(b,1,"card-img-top-wrapper svelte-18poi8p",null,j,{"has-content":o(I)}),B=n(g,1,"card-header svelte-18poi8p",null,B,{"has-content":o(N)}),F=n(h,1,"card-footer svelte-18poi8p",null,F,{"has-content":o(A)}),M=n(x,1,"card-img-bottom-wrapper svelte-18poi8p",null,M,{"has-content":o(q)})}),W(S,c),X(E)}const __Default = (G(dr,{variant:{},textAlign:{},extraClass:{}},["image-top","header","default","footer","image-bottom"],[],{mode:"open"}));
|
|
28
|
+
customElements.define("ui-card", __Default);
|
|
29
|
+
export default __Default;
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
<svelte:options customElement="ui-card" />
|
|
2
|
+
|
|
3
|
+
<script>
|
|
4
|
+
import { onMount } from "svelte";
|
|
5
|
+
export let variant = "default";
|
|
6
|
+
export let textAlign = "start";
|
|
7
|
+
export let extraClass = "";
|
|
8
|
+
let cardEl;
|
|
9
|
+
let hasHeader = false;
|
|
10
|
+
let hasFooter = false;
|
|
11
|
+
let hasImageTop = false;
|
|
12
|
+
let hasImageBottom = false;
|
|
13
|
+
function updateSlotVisibility() {
|
|
14
|
+
if (!cardEl) return;
|
|
15
|
+
const root = cardEl.getRootNode();
|
|
16
|
+
if (!root) return;
|
|
17
|
+
const slotHeader = root.querySelector('slot[name="header"]');
|
|
18
|
+
const slotFooter = root.querySelector('slot[name="footer"]');
|
|
19
|
+
const slotImgTop = root.querySelector('slot[name="image-top"]');
|
|
20
|
+
const slotImgBottom = root.querySelector('slot[name="image-bottom"]');
|
|
21
|
+
hasHeader = (slotHeader?.assignedNodes().length ?? 0) > 0;
|
|
22
|
+
hasFooter = (slotFooter?.assignedNodes().length ?? 0) > 0;
|
|
23
|
+
hasImageTop = (slotImgTop?.assignedNodes().length ?? 0) > 0;
|
|
24
|
+
hasImageBottom = (slotImgBottom?.assignedNodes().length ?? 0) > 0;
|
|
25
|
+
}
|
|
26
|
+
onMount(() => {
|
|
27
|
+
updateSlotVisibility();
|
|
28
|
+
const mo = new MutationObserver(updateSlotVisibility);
|
|
29
|
+
const root = cardEl?.getRootNode();
|
|
30
|
+
const host = root?.host;
|
|
31
|
+
if (host) mo.observe(host, { childList: true, subtree: true });
|
|
32
|
+
return () => mo.disconnect();
|
|
33
|
+
});
|
|
34
|
+
$: rootClass = `card-root variant-${variant} text-${textAlign} ${extraClass}`.trim();
|
|
35
|
+
</script>
|
|
36
|
+
|
|
37
|
+
<div class={rootClass} bind:this={cardEl}>
|
|
38
|
+
<div class="card-img-top-wrapper" class:has-content={hasImageTop}>
|
|
39
|
+
<slot name="image-top"></slot>
|
|
40
|
+
</div>
|
|
41
|
+
<div class="card-header" class:has-content={hasHeader}>
|
|
42
|
+
<slot name="header"></slot>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="card-body">
|
|
45
|
+
<slot></slot>
|
|
46
|
+
</div>
|
|
47
|
+
<div class="card-footer" class:has-content={hasFooter}>
|
|
48
|
+
<slot name="footer"></slot>
|
|
49
|
+
</div>
|
|
50
|
+
<div class="card-img-bottom-wrapper" class:has-content={hasImageBottom}>
|
|
51
|
+
<slot name="image-bottom"></slot>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<style>
|
|
56
|
+
.card-root {
|
|
57
|
+
position: relative;
|
|
58
|
+
display: flex;
|
|
59
|
+
flex-direction: column;
|
|
60
|
+
min-width: 0;
|
|
61
|
+
word-wrap: break-word;
|
|
62
|
+
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
63
|
+
font-size: var(--ui-card-font-size, 14px);
|
|
64
|
+
line-height: 1.5;
|
|
65
|
+
color: var(--ui-card-color, #212529);
|
|
66
|
+
background-color: var(--ui-card-bg, #fff);
|
|
67
|
+
border: var(--ui-card-border-width, 1px) solid
|
|
68
|
+
var(--ui-card-border-color, rgba(0, 0, 0, 0.125));
|
|
69
|
+
border-radius: var(--ui-card-border-radius, 8px);
|
|
70
|
+
box-shadow: var(--ui-card-box-shadow, none);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* Variants: default uses CSS vars above; others set bg + border + color */
|
|
74
|
+
.card-root.variant-primary {
|
|
75
|
+
background-color: var(--ui-card-primary-bg, #0d6efd);
|
|
76
|
+
border-color: var(--ui-card-primary-border, #0d6efd);
|
|
77
|
+
color: var(--ui-card-primary-color, #fff);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.card-root.variant-secondary {
|
|
81
|
+
background-color: var(--ui-card-secondary-bg, #6c757d);
|
|
82
|
+
border-color: var(--ui-card-secondary-border, #6c757d);
|
|
83
|
+
color: var(--ui-card-secondary-color, #fff);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.card-root.variant-success {
|
|
87
|
+
background-color: var(--ui-card-success-bg, #198754);
|
|
88
|
+
border-color: var(--ui-card-success-border, #198754);
|
|
89
|
+
color: var(--ui-card-success-color, #fff);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.card-root.variant-danger {
|
|
93
|
+
background-color: var(--ui-card-danger-bg, #dc3545);
|
|
94
|
+
border-color: var(--ui-card-danger-border, #dc3545);
|
|
95
|
+
color: var(--ui-card-danger-color, #fff);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.card-root.variant-warning {
|
|
99
|
+
background-color: var(--ui-card-warning-bg, #ffc107);
|
|
100
|
+
border-color: var(--ui-card-warning-border, #ffc107);
|
|
101
|
+
color: var(--ui-card-warning-color, #000);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.card-root.variant-info {
|
|
105
|
+
background-color: var(--ui-card-info-bg, #0dcaf0);
|
|
106
|
+
border-color: var(--ui-card-info-border, #0dcaf0);
|
|
107
|
+
color: var(--ui-card-info-color, #000);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.card-root.variant-light {
|
|
111
|
+
background-color: var(--ui-card-light-bg, #f8f9fa);
|
|
112
|
+
border-color: var(--ui-card-light-border, #e9ecef);
|
|
113
|
+
color: var(--ui-card-light-color, #212529);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.card-root.variant-dark {
|
|
117
|
+
background-color: var(--ui-card-dark-bg, #212529);
|
|
118
|
+
border-color: var(--ui-card-dark-border, #212529);
|
|
119
|
+
color: var(--ui-card-dark-color, #fff);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/* Text alignment */
|
|
123
|
+
.card-root.text-start {
|
|
124
|
+
text-align: start;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.card-root.text-center {
|
|
128
|
+
text-align: center;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.card-root.text-end {
|
|
132
|
+
text-align: end;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.card-header {
|
|
136
|
+
padding: var(--ui-card-header-padding-y, 0.5rem) var(--ui-card-header-padding-x, 1rem);
|
|
137
|
+
margin-bottom: 0;
|
|
138
|
+
background-color: var(--ui-card-header-bg, rgba(0, 0, 0, 0.03));
|
|
139
|
+
border-bottom: var(--ui-card-border-width, 1px) solid
|
|
140
|
+
var(--ui-card-border-color, rgba(0, 0, 0, 0.125));
|
|
141
|
+
border-radius: calc(var(--ui-card-border-radius, 8px) - 1px) calc(var(--ui-card-border-radius, 8px) - 1px) 0 0;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.card-root.variant-default .card-header {
|
|
145
|
+
background-color: var(--ui-card-header-bg, rgba(0, 0, 0, 0.03));
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.card-root.variant-primary .card-header,
|
|
149
|
+
.card-root.variant-secondary .card-header,
|
|
150
|
+
.card-root.variant-success .card-header,
|
|
151
|
+
.card-root.variant-danger .card-header,
|
|
152
|
+
.card-root.variant-warning .card-header,
|
|
153
|
+
.card-root.variant-info .card-header,
|
|
154
|
+
.card-root.variant-dark .card-header {
|
|
155
|
+
background-color: rgba(0, 0, 0, 0.2);
|
|
156
|
+
border-bottom-color: rgba(255, 255, 255, 0.2);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.card-header:not(.has-content) {
|
|
160
|
+
display: none;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.card-body {
|
|
164
|
+
flex: 1 1 auto;
|
|
165
|
+
padding: var(--ui-card-body-padding-y, 1rem) var(--ui-card-body-padding-x, 1rem);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.card-body ::slotted(h1),
|
|
169
|
+
.card-body ::slotted(h2),
|
|
170
|
+
.card-body ::slotted(h3),
|
|
171
|
+
.card-body ::slotted(h4),
|
|
172
|
+
.card-body ::slotted(h5),
|
|
173
|
+
.card-body ::slotted(h6) {
|
|
174
|
+
margin-top: 0;
|
|
175
|
+
margin-bottom: var(--ui-card-title-margin-bottom, 0.5rem);
|
|
176
|
+
font-size: var(--ui-card-title-font-size, 1.25rem);
|
|
177
|
+
font-weight: 500;
|
|
178
|
+
line-height: 1.2;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.card-body ::slotted(p) {
|
|
182
|
+
margin-top: 0;
|
|
183
|
+
margin-bottom: var(--ui-card-text-margin-bottom, 0.5rem);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.card-body ::slotted(p:last-child) {
|
|
187
|
+
margin-bottom: 0;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.card-footer {
|
|
191
|
+
padding: var(--ui-card-footer-padding-y, 0.5rem) var(--ui-card-footer-padding-x, 1rem);
|
|
192
|
+
background-color: var(--ui-card-footer-bg, rgba(0, 0, 0, 0.03));
|
|
193
|
+
border-top: var(--ui-card-border-width, 1px) solid
|
|
194
|
+
var(--ui-card-border-color, rgba(0, 0, 0, 0.125));
|
|
195
|
+
border-radius: 0 0 calc(var(--ui-card-border-radius, 8px) - 1px)
|
|
196
|
+
calc(var(--ui-card-border-radius, 8px) - 1px);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.card-root.variant-primary .card-footer,
|
|
200
|
+
.card-root.variant-secondary .card-footer,
|
|
201
|
+
.card-root.variant-success .card-footer,
|
|
202
|
+
.card-root.variant-danger .card-footer,
|
|
203
|
+
.card-root.variant-warning .card-footer,
|
|
204
|
+
.card-root.variant-info .card-footer,
|
|
205
|
+
.card-root.variant-dark .card-footer {
|
|
206
|
+
background-color: rgba(0, 0, 0, 0.2);
|
|
207
|
+
border-top-color: rgba(255, 255, 255, 0.2);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.card-footer:not(.has-content) {
|
|
211
|
+
display: none;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.card-img-top-wrapper:not(.has-content),
|
|
215
|
+
.card-img-bottom-wrapper:not(.has-content) {
|
|
216
|
+
display: none;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.card-img-top-wrapper.has-content {
|
|
220
|
+
overflow: hidden;
|
|
221
|
+
border-top-left-radius: var(--ui-card-border-radius, 8px);
|
|
222
|
+
border-top-right-radius: var(--ui-card-border-radius, 8px);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.card-img-top-wrapper.has-content ::slotted(img) {
|
|
226
|
+
display: block;
|
|
227
|
+
width: 100%;
|
|
228
|
+
height: auto;
|
|
229
|
+
object-fit: cover;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.card-img-bottom-wrapper.has-content {
|
|
233
|
+
overflow: hidden;
|
|
234
|
+
border-bottom-left-radius: var(--ui-card-border-radius, 8px);
|
|
235
|
+
border-bottom-right-radius: var(--ui-card-border-radius, 8px);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.card-img-bottom-wrapper.has-content ::slotted(img) {
|
|
239
|
+
display: block;
|
|
240
|
+
width: 100%;
|
|
241
|
+
height: auto;
|
|
242
|
+
object-fit: cover;
|
|
243
|
+
}
|
|
244
|
+
</style>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
/**
|
|
5
|
+
* Visual variant: background and border (Bootstrap-style).
|
|
6
|
+
* `default` = white bg with border; others = colored bg + contrasting text.
|
|
7
|
+
*/ variant?: "default" | "primary" | "secondary" | "success" | "danger" | "warning" | "info" | "light" | "dark";
|
|
8
|
+
/** Text alignment for the card body (and header/footer when applicable). */ textAlign?: "start" | "center" | "end";
|
|
9
|
+
/** Extra class(es) for the card root. Set via the extra-class attribute. */ extraClass?: string;
|
|
10
|
+
};
|
|
11
|
+
events: {
|
|
12
|
+
[evt: string]: CustomEvent<any>;
|
|
13
|
+
};
|
|
14
|
+
slots: {
|
|
15
|
+
'image-top': {};
|
|
16
|
+
header: {};
|
|
17
|
+
default: {};
|
|
18
|
+
footer: {};
|
|
19
|
+
'image-bottom': {};
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export type CardProps = typeof __propDef.props;
|
|
23
|
+
export type CardEvents = typeof __propDef.events;
|
|
24
|
+
export type CardSlots = typeof __propDef.slots;
|
|
25
|
+
export default class Card extends SvelteComponentTyped<CardProps, CardEvents, CardSlots> {
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./Checkbox.svelte";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import{c as q,p as G,l as u,d as C,a as N,e as O,t as P,f as U,i as A,j as J,g as r,G as K,k as Q,b as D,n as c,m as f,s as x,x as T,r as S}from"../../assets/custom-element-CN6vLcFC.js";import{o as V}from"../../assets/index-client-CiUbrQq_.js";import{s as W}from"../../assets/slot-CRFQJtYY.js";import{a as X,i as Y,s as Z}from"../../assets/lifecycle-BK5NY8qp.js";import{r as $,s as m,a as ee,d as re}from"../../assets/attributes-o88QCNuy.js";import{b as te}from"../../assets/this-DllEouAd.js";import{p as a}from"../../assets/props-DbUVX42-.js";var oe=Q('<label><span class="checkbox-control svelte-wckrr7"><input type="checkbox" class="svelte-wckrr7"/> <span class="checkbox-box svelte-wckrr7" aria-hidden="true"></span></span> <span class="checkbox-label svelte-wckrr7"><!></span></label>');const ce={hash:"svelte-wckrr7",code:`.checkbox-root.svelte-wckrr7 {display:inline-flex;align-items:center;gap:0.5rem;font-family:system-ui,\r
|
|
2
|
+
-apple-system,\r
|
|
3
|
+
BlinkMacSystemFont,\r
|
|
4
|
+
"Segoe UI",\r
|
|
5
|
+
sans-serif;font-size:14px;line-height:1.3;color:var(--ui-checkbox-label-color, #111827);cursor:pointer;\r
|
|
6
|
+
/* Prevent vertical shift when state or focus changes */min-height:var(--ui-checkbox-size, 22px);}.checkbox-control.svelte-wckrr7 {position:relative;display:inline-flex;align-items:center;justify-content:center;\r
|
|
7
|
+
/* Fixed size so layout doesn’t shift when checkmark appears or on focus */width:var(--ui-checkbox-size, 22px);height:var(--ui-checkbox-size, 22px);flex-shrink:0;}.checkbox-control.svelte-wckrr7 input:where(.svelte-wckrr7) {position:absolute;inset:0;margin:0;padding:0;opacity:0;cursor:inherit;outline:none;}.checkbox-box.svelte-wckrr7 {width:var(--ui-checkbox-size, 22px);height:var(--ui-checkbox-size, 22px);min-width:var(--ui-checkbox-size, 22px);min-height:var(--ui-checkbox-size, 22px);flex-shrink:0;border-radius:var(--ui-checkbox-radius, 4px);border:2px solid var(--ui-checkbox-border-color, #111111);background-color:var(--ui-checkbox-bg, transparent);box-sizing:border-box;position:relative;display:inline-flex;align-items:center;justify-content:center;transition:background-color 0.15s ease,\r
|
|
8
|
+
border-color 0.15s ease,\r
|
|
9
|
+
box-shadow 0.15s ease;}\r
|
|
10
|
+
\r
|
|
11
|
+
/* Out of flow so checkmark/indeterminate never affect layout */.checkbox-box.svelte-wckrr7::before {content:"";position:absolute;inset:0;margin:auto;opacity:0;transition:opacity 0.1s ease,\r
|
|
12
|
+
transform 0.1s ease;}\r
|
|
13
|
+
\r
|
|
14
|
+
/* Checked: solid purple square with checkmark */.checkbox-root.is-checked.svelte-wckrr7 .checkbox-box:where(.svelte-wckrr7) {background-color:var(--ui-checkbox-checked-bg, var(--ui-primary, #474bff));border-color:var(--ui-checkbox-checked-border, var(--ui-primary, #474bff));}.checkbox-root.is-checked.svelte-wckrr7 .checkbox-box:where(.svelte-wckrr7)::before {width:26%;height:50%;border-right:3px solid var(--ui-checkbox-check-color, #ffffff);border-bottom:3px solid var(--ui-checkbox-check-color, #ffffff);transform:rotate(45deg) translate(-8%, -8%);transform-origin:center center;opacity:1;}\r
|
|
15
|
+
\r
|
|
16
|
+
/* Indeterminate: solid purple with dash */.checkbox-root.is-indeterminate.svelte-wckrr7 .checkbox-box:where(.svelte-wckrr7) {background-color:var(--ui-checkbox-checked-bg, var(--ui-primary, #474bff));border-color:var(--ui-checkbox-checked-border, var(--ui-primary, #474bff));}.checkbox-root.is-indeterminate.svelte-wckrr7 .checkbox-box:where(.svelte-wckrr7)::before {width:70%;height:0;border-bottom:3px solid var(--ui-checkbox-check-color, #ffffff);opacity:1;transform:none;}\r
|
|
17
|
+
\r
|
|
18
|
+
/* Hover + focus ring */.checkbox-root.svelte-wckrr7:not(.is-disabled)\r
|
|
19
|
+
.checkbox-control:where(.svelte-wckrr7)\r
|
|
20
|
+
input:where(.svelte-wckrr7):focus-visible\r
|
|
21
|
+
+ .checkbox-box:where(.svelte-wckrr7) {box-shadow:0 0 0 3px var(--ui-checkbox-focus-ring, rgba(71, 75, 255, 0.45));}.checkbox-root.is-disabled.svelte-wckrr7 {cursor:not-allowed;color:var(--ui-checkbox-label-disabled, #9ca3af);}.checkbox-root.is-disabled.svelte-wckrr7 .checkbox-box:where(.svelte-wckrr7) {border-color:var(--ui-checkbox-border-disabled, #bdbdbc);background-color:var(--ui-checkbox-bg-disabled, #e5e7eb);}.checkbox-label.svelte-wckrr7:empty {display:none;}`};function ae(E,t){G(t,!1),X(E,ce);const d=f(),v=f(),s=f();let n=a(t,"checked",12,!1),h=a(t,"disabled",12,!1),l=a(t,"indeterminate",12,!1),p=a(t,"name",12,void 0),g=a(t,"value",12,void 0),w=a(t,"ariaLabel",12,void 0),y=a(t,"ariaDescribedby",12,void 0),_=a(t,"onchange",12,void 0);function z(e){return typeof e=="boolean"?e:e==null?!1:String(e).toLowerCase()==="true"}let b=f();function F(e){const i=e.getRootNode();return i instanceof ShadowRoot?i.host:null}function L(){r(b)&&K(b,r(b).indeterminate=r(s))}V(L);function H(e){const i=e.target;n(i.checked),r(s)&&(l(!1),L());const I={checked:i.checked,indeterminate:!1};_()?.(I),F(i)?.dispatchEvent(new CustomEvent("change",{detail:I,bubbles:!0}))}u(()=>C(n()),()=>{x(d,z(n()))}),u(()=>C(h()),()=>{x(v,z(h()))}),u(()=>C(l()),()=>{x(s,z(l()))}),u(()=>{},()=>{L()}),N();var M={get checked(){return n()},set checked(e){n(e),c()},get disabled(){return h()},set disabled(e){h(e),c()},get indeterminate(){return l()},set indeterminate(e){l(e),c()},get name(){return p()},set name(e){p(e),c()},get value(){return g()},set value(e){g(e),c()},get ariaLabel(){return w()},set ariaLabel(e){w(e),c()},get ariaDescribedby(){return y()},set ariaDescribedby(e){y(e),c()},get onchange(){return _()},set onchange(e){_(e),c()}};Y();var k=oe(),B=D(k),o=D(B);$(o),te(o,e=>x(b,e),()=>r(b)),T(2),S(B);var j=O(B,2),R=D(j);return W(R,t,"default",{},null),S(j),S(k),P(()=>{Z(k,1,`checkbox-root ${r(d)?"is-checked":""} ${r(s)?"is-indeterminate":""} ${r(v)?"is-disabled":""}`,"svelte-wckrr7"),m(o,"name",p()),ee(o,g()),re(o,r(d)),o.disabled=r(v),m(o,"aria-label",w()),m(o,"aria-describedby",y()),m(o,"aria-checked",r(s)?"mixed":r(d)?"true":"false")}),U("change",o,H),A(E,k),J(M)}const __Default = (q(ae,{checked:{},disabled:{},indeterminate:{},name:{},value:{},ariaLabel:{},ariaDescribedby:{},onchange:{}},["default"],[],{mode:"open"}));
|
|
22
|
+
customElements.define("ui-checkbox", __Default);
|
|
23
|
+
export default __Default;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
<svelte:options customElement="ui-checkbox" />
|
|
2
|
+
|
|
3
|
+
<script>
|
|
4
|
+
import { onMount } from "svelte";
|
|
5
|
+
export let checked = false;
|
|
6
|
+
export let disabled = false;
|
|
7
|
+
export let indeterminate = false;
|
|
8
|
+
export let name = void 0;
|
|
9
|
+
export let value = void 0;
|
|
10
|
+
export let ariaLabel = void 0;
|
|
11
|
+
export let ariaDescribedby = void 0;
|
|
12
|
+
export let onchange = void 0;
|
|
13
|
+
function toBool(v) {
|
|
14
|
+
if (typeof v === "boolean") return v;
|
|
15
|
+
if (v == null) return false;
|
|
16
|
+
return String(v).toLowerCase() === "true";
|
|
17
|
+
}
|
|
18
|
+
$: checkedBool = toBool(checked);
|
|
19
|
+
$: disabledBool = toBool(disabled);
|
|
20
|
+
$: indeterminateBool = toBool(indeterminate);
|
|
21
|
+
let inputEl;
|
|
22
|
+
function getHost(el) {
|
|
23
|
+
const root = el.getRootNode();
|
|
24
|
+
return root instanceof ShadowRoot ? root.host : null;
|
|
25
|
+
}
|
|
26
|
+
function syncIndeterminate() {
|
|
27
|
+
if (inputEl) {
|
|
28
|
+
inputEl.indeterminate = indeterminateBool;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
onMount(syncIndeterminate);
|
|
32
|
+
$: syncIndeterminate();
|
|
33
|
+
function handleChange(event) {
|
|
34
|
+
const target = event.target;
|
|
35
|
+
checked = target.checked;
|
|
36
|
+
if (indeterminateBool) {
|
|
37
|
+
indeterminate = false;
|
|
38
|
+
syncIndeterminate();
|
|
39
|
+
}
|
|
40
|
+
const detail = { checked: target.checked, indeterminate: false };
|
|
41
|
+
onchange?.(detail);
|
|
42
|
+
const host = getHost(target);
|
|
43
|
+
host?.dispatchEvent(new CustomEvent("change", { detail, bubbles: true }));
|
|
44
|
+
}
|
|
45
|
+
</script>
|
|
46
|
+
|
|
47
|
+
<label
|
|
48
|
+
class="checkbox-root {checkedBool ? 'is-checked' : ''} {indeterminateBool
|
|
49
|
+
? 'is-indeterminate'
|
|
50
|
+
: ''} {disabledBool ? 'is-disabled' : ''}"
|
|
51
|
+
>
|
|
52
|
+
<span class="checkbox-control">
|
|
53
|
+
<input
|
|
54
|
+
bind:this={inputEl}
|
|
55
|
+
type="checkbox"
|
|
56
|
+
{name}
|
|
57
|
+
{value}
|
|
58
|
+
checked={checkedBool}
|
|
59
|
+
disabled={disabledBool}
|
|
60
|
+
aria-label={ariaLabel}
|
|
61
|
+
aria-describedby={ariaDescribedby}
|
|
62
|
+
aria-checked={indeterminateBool ? "mixed" : checkedBool ? "true" : "false"}
|
|
63
|
+
on:change={handleChange}
|
|
64
|
+
/>
|
|
65
|
+
<span class="checkbox-box" aria-hidden="true"></span>
|
|
66
|
+
</span>
|
|
67
|
+
<span class="checkbox-label">
|
|
68
|
+
<slot />
|
|
69
|
+
</span>
|
|
70
|
+
</label>
|
|
71
|
+
|
|
72
|
+
<style>
|
|
73
|
+
.checkbox-root {
|
|
74
|
+
display: inline-flex;
|
|
75
|
+
align-items: center;
|
|
76
|
+
gap: 0.5rem;
|
|
77
|
+
font-family:
|
|
78
|
+
system-ui,
|
|
79
|
+
-apple-system,
|
|
80
|
+
BlinkMacSystemFont,
|
|
81
|
+
"Segoe UI",
|
|
82
|
+
sans-serif;
|
|
83
|
+
font-size: 14px;
|
|
84
|
+
line-height: 1.3;
|
|
85
|
+
color: var(--ui-checkbox-label-color, #111827);
|
|
86
|
+
cursor: pointer;
|
|
87
|
+
/* Prevent vertical shift when state or focus changes */
|
|
88
|
+
min-height: var(--ui-checkbox-size, 22px);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.checkbox-control {
|
|
92
|
+
position: relative;
|
|
93
|
+
display: inline-flex;
|
|
94
|
+
align-items: center;
|
|
95
|
+
justify-content: center;
|
|
96
|
+
/* Fixed size so layout doesn’t shift when checkmark appears or on focus */
|
|
97
|
+
width: var(--ui-checkbox-size, 22px);
|
|
98
|
+
height: var(--ui-checkbox-size, 22px);
|
|
99
|
+
flex-shrink: 0;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.checkbox-control input {
|
|
103
|
+
position: absolute;
|
|
104
|
+
inset: 0;
|
|
105
|
+
margin: 0;
|
|
106
|
+
padding: 0;
|
|
107
|
+
opacity: 0;
|
|
108
|
+
cursor: inherit;
|
|
109
|
+
outline: none;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.checkbox-box {
|
|
113
|
+
width: var(--ui-checkbox-size, 22px);
|
|
114
|
+
height: var(--ui-checkbox-size, 22px);
|
|
115
|
+
min-width: var(--ui-checkbox-size, 22px);
|
|
116
|
+
min-height: var(--ui-checkbox-size, 22px);
|
|
117
|
+
flex-shrink: 0;
|
|
118
|
+
border-radius: var(--ui-checkbox-radius, 4px);
|
|
119
|
+
border: 2px solid var(--ui-checkbox-border-color, #111111);
|
|
120
|
+
background-color: var(--ui-checkbox-bg, transparent);
|
|
121
|
+
box-sizing: border-box;
|
|
122
|
+
position: relative;
|
|
123
|
+
display: inline-flex;
|
|
124
|
+
align-items: center;
|
|
125
|
+
justify-content: center;
|
|
126
|
+
transition:
|
|
127
|
+
background-color 0.15s ease,
|
|
128
|
+
border-color 0.15s ease,
|
|
129
|
+
box-shadow 0.15s ease;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* Out of flow so checkmark/indeterminate never affect layout */
|
|
133
|
+
.checkbox-box::before {
|
|
134
|
+
content: "";
|
|
135
|
+
position: absolute;
|
|
136
|
+
inset: 0;
|
|
137
|
+
margin: auto;
|
|
138
|
+
opacity: 0;
|
|
139
|
+
transition:
|
|
140
|
+
opacity 0.1s ease,
|
|
141
|
+
transform 0.1s ease;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* Checked: solid purple square with checkmark */
|
|
145
|
+
.checkbox-root.is-checked .checkbox-box {
|
|
146
|
+
background-color: var(--ui-checkbox-checked-bg, var(--ui-primary, #474bff));
|
|
147
|
+
border-color: var(--ui-checkbox-checked-border, var(--ui-primary, #474bff));
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.checkbox-root.is-checked .checkbox-box::before {
|
|
151
|
+
width: 26%;
|
|
152
|
+
height: 50%;
|
|
153
|
+
border-right: 3px solid var(--ui-checkbox-check-color, #ffffff);
|
|
154
|
+
border-bottom: 3px solid var(--ui-checkbox-check-color, #ffffff);
|
|
155
|
+
transform: rotate(45deg) translate(-8%, -8%);
|
|
156
|
+
transform-origin: center center;
|
|
157
|
+
opacity: 1;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/* Indeterminate: solid purple with dash */
|
|
161
|
+
.checkbox-root.is-indeterminate .checkbox-box {
|
|
162
|
+
background-color: var(--ui-checkbox-checked-bg, var(--ui-primary, #474bff));
|
|
163
|
+
border-color: var(--ui-checkbox-checked-border, var(--ui-primary, #474bff));
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.checkbox-root.is-indeterminate .checkbox-box::before {
|
|
167
|
+
width: 70%;
|
|
168
|
+
height: 0;
|
|
169
|
+
border-bottom: 3px solid var(--ui-checkbox-check-color, #ffffff);
|
|
170
|
+
opacity: 1;
|
|
171
|
+
transform: none;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* Hover + focus ring */
|
|
175
|
+
.checkbox-root:not(.is-disabled)
|
|
176
|
+
.checkbox-control
|
|
177
|
+
input:focus-visible
|
|
178
|
+
+ .checkbox-box {
|
|
179
|
+
box-shadow: 0 0 0 3px var(--ui-checkbox-focus-ring, rgba(71, 75, 255, 0.45));
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
.checkbox-root.is-disabled {
|
|
184
|
+
cursor: not-allowed;
|
|
185
|
+
color: var(--ui-checkbox-label-disabled, #9ca3af);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.checkbox-root.is-disabled .checkbox-box {
|
|
189
|
+
border-color: var(--ui-checkbox-border-disabled, #bdbdbc);
|
|
190
|
+
background-color: var(--ui-checkbox-bg-disabled, #e5e7eb);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.checkbox-label:empty {
|
|
194
|
+
display: none;
|
|
195
|
+
}
|
|
196
|
+
</style>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
checked?: boolean;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
/** Visual indeterminate state (dash) for tri-state checkboxes. */ indeterminate?: boolean;
|
|
7
|
+
name?: string | undefined;
|
|
8
|
+
value?: string | undefined;
|
|
9
|
+
ariaLabel?: string | undefined;
|
|
10
|
+
ariaDescribedby?: string | undefined;
|
|
11
|
+
/** Callback when checked state changes. */ onchange?: ((detail: {
|
|
12
|
+
checked: boolean;
|
|
13
|
+
indeterminate: boolean;
|
|
14
|
+
}) => void) | undefined;
|
|
15
|
+
};
|
|
16
|
+
events: {
|
|
17
|
+
[evt: string]: CustomEvent<any>;
|
|
18
|
+
};
|
|
19
|
+
slots: {
|
|
20
|
+
default: {};
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export type CheckboxProps = typeof __propDef.props;
|
|
24
|
+
export type CheckboxEvents = typeof __propDef.events;
|
|
25
|
+
export type CheckboxSlots = typeof __propDef.slots;
|
|
26
|
+
export default class Checkbox extends SvelteComponentTyped<CheckboxProps, CheckboxEvents, CheckboxSlots> {
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./Form.svelte";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{c as S,p as D,t as E,f as k,i as F,j as R,k as j,b as B,n as o,r as H,g as m,s as I,m as M}from"../../assets/custom-element-CN6vLcFC.js";import{s as N}from"../../assets/slot-CRFQJtYY.js";import{a as U,i as q,s as z}from"../../assets/lifecycle-BK5NY8qp.js";import{s as r}from"../../assets/attributes-o88QCNuy.js";import{b as A}from"../../assets/this-DllEouAd.js";import{p as n}from"../../assets/props-DbUVX42-.js";var G=j("<form><!></form>");const J={hash:"svelte-1a6csuh",code:`.form-root.svelte-1a6csuh {display:block;font-family:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
|
|
2
|
+
sans-serif;}`};function K(y,a){D(a,!1),U(y,J);let l=n(a,"action",12,void 0),i=n(a,"method",12,"get"),u=n(a,"enctype",12,"application/x-www-form-urlencoded"),c=n(a,"target",12,void 0),f=n(a,"name",12,void 0),d=n(a,"autocomplete",12,void 0),g=n(a,"noValidate",12,!1),h=n(a,"extraClass",12,""),p=n(a,"onsubmit",12,void 0),s=M();function x(t){const b=t.getRootNode();return b instanceof ShadowRoot?b.host:null}function w(t){if(!m(s))return;t.preventDefault();const v={formData:new FormData(m(s)),form:m(s)};p()?.(v);const _=x(m(s));_&&_.dispatchEvent(new CustomEvent("submit",{detail:v,bubbles:!0,cancelable:!0}))}var C={get action(){return l()},set action(t){l(t),o()},get method(){return i()},set method(t){i(t),o()},get enctype(){return u()},set enctype(t){u(t),o()},get target(){return c()},set target(t){c(t),o()},get name(){return f()},set name(t){f(t),o()},get autocomplete(){return d()},set autocomplete(t){d(t),o()},get noValidate(){return g()},set noValidate(t){g(t),o()},get extraClass(){return h()},set extraClass(t){h(t),o()},get onsubmit(){return p()},set onsubmit(t){p(t),o()}};q();var e=G(),V=B(e);return N(V,a,"default",{},null),H(e),A(e,t=>I(s,t),()=>m(s)),E(()=>{z(e,1,`form-root ${h()??""}`,"svelte-1a6csuh"),r(e,"action",l()),r(e,"method",i()),r(e,"enctype",u()),r(e,"target",c()),r(e,"name",f()),r(e,"autocomplete",d()),e.noValidate=g()}),k("submit",e,w),F(y,e),R(C)}const __Default = (S(K,{action:{},method:{},enctype:{},target:{},name:{},autocomplete:{},noValidate:{},extraClass:{},onsubmit:{}},["default"],[],{mode:"open"}));
|
|
3
|
+
customElements.define("ui-form", __Default);
|
|
4
|
+
export default __Default;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<svelte:options customElement="ui-form" />
|
|
2
|
+
|
|
3
|
+
<script>
|
|
4
|
+
export let action = void 0;
|
|
5
|
+
export let method = "get";
|
|
6
|
+
export let enctype = "application/x-www-form-urlencoded";
|
|
7
|
+
export let target = void 0;
|
|
8
|
+
export let name = void 0;
|
|
9
|
+
export let autocomplete = void 0;
|
|
10
|
+
export let noValidate = false;
|
|
11
|
+
export let extraClass = "";
|
|
12
|
+
export let onsubmit = void 0;
|
|
13
|
+
let formEl;
|
|
14
|
+
function getHost(el) {
|
|
15
|
+
const root = el.getRootNode();
|
|
16
|
+
return root instanceof ShadowRoot ? root.host : null;
|
|
17
|
+
}
|
|
18
|
+
function handleSubmit(event) {
|
|
19
|
+
if (!formEl) return;
|
|
20
|
+
event.preventDefault();
|
|
21
|
+
const formData = new FormData(formEl);
|
|
22
|
+
const detail = { formData, form: formEl };
|
|
23
|
+
onsubmit?.(detail);
|
|
24
|
+
const host = getHost(formEl);
|
|
25
|
+
if (host) {
|
|
26
|
+
host.dispatchEvent(
|
|
27
|
+
new CustomEvent("submit", { detail, bubbles: true, cancelable: true })
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<form
|
|
34
|
+
bind:this={formEl}
|
|
35
|
+
class="form-root {extraClass}"
|
|
36
|
+
{action}
|
|
37
|
+
{method}
|
|
38
|
+
enctype={enctype}
|
|
39
|
+
{target}
|
|
40
|
+
{name}
|
|
41
|
+
autocomplete={autocomplete}
|
|
42
|
+
noValidate={noValidate}
|
|
43
|
+
on:submit={handleSubmit}
|
|
44
|
+
>
|
|
45
|
+
<slot />
|
|
46
|
+
</form>
|
|
47
|
+
|
|
48
|
+
<style>
|
|
49
|
+
.form-root {
|
|
50
|
+
display: block;
|
|
51
|
+
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
|
|
52
|
+
sans-serif;
|
|
53
|
+
}
|
|
54
|
+
</style>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
/** Form submission URL (native `action`). */ action?: string | undefined;
|
|
5
|
+
/** HTTP method: get or post. */ method?: "get" | "post";
|
|
6
|
+
/** Encoding for form data (e.g. multipart/form-data for file uploads). */ enctype?: "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain";
|
|
7
|
+
/** Where to open the response: _self, _blank, _parent, _top, or frame name. */ target?: string | undefined;
|
|
8
|
+
/** Form name (for scripting). */ name?: string | undefined;
|
|
9
|
+
/** Autocomplete for the form: on or off. */ autocomplete?: "on" | "off" | undefined;
|
|
10
|
+
/** When true, disables browser native validation (use with custom validation). */ noValidate?: boolean;
|
|
11
|
+
/** Extra class(es) for the form element. Set via the extra-class attribute. */ extraClass?: string;
|
|
12
|
+
/** Callback when form is submitted. Receives FormData; return false or call preventDefault on event to cancel. */ onsubmit?: ((detail: {
|
|
13
|
+
formData: FormData;
|
|
14
|
+
form: HTMLFormElement;
|
|
15
|
+
}) => void) | undefined;
|
|
16
|
+
};
|
|
17
|
+
events: {
|
|
18
|
+
[evt: string]: CustomEvent<any>;
|
|
19
|
+
};
|
|
20
|
+
slots: {
|
|
21
|
+
default: {};
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export type FormProps = typeof __propDef.props;
|
|
25
|
+
export type FormEvents = typeof __propDef.events;
|
|
26
|
+
export type FormSlots = typeof __propDef.slots;
|
|
27
|
+
export default class Form extends SvelteComponentTyped<FormProps, FormEvents, FormSlots> {
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./FormSelect.svelte";
|