coveragebook_components 0.19.0 ā 0.19.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.
- checksums.yaml +4 -4
- data/app/assets/build/coco/coco.css +169 -6
- data/app/assets/build/coco/coco.js +183 -137
- data/app/components/coco/buttons/button/button.css +5 -1
- data/app/components/coco/buttons/button_group/button_group.css +1 -1
- data/app/components/coco/buttons/confirm_panel/confirm_panel.css +4 -0
- data/app/components/coco/buttons/option_bar/option_bar.css +1 -1
- data/app/components/coco/buttons/toolbar/toolbar.rb +2 -2
- data/app/components/coco/component.rb +1 -1
- data/app/components/coco/presented_component.rb +1 -1
- data/config/esbuild.config.mjs +56 -0
- data/config/tailwind.preset.js +9 -1
- data/config/tokens.js +13 -0
- data/lib/coco/options/item.rb +1 -1
- data/lib/coco.rb +1 -1
- data/lib/scripts/esbuild-meta.mjs +26 -0
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5070cfdd98c6756ccb797a78bd59629c232de7dffef0eb89159160c920a770b4
|
|
4
|
+
data.tar.gz: 26f34b06acd278881a4b3b3c661b746300b014eaf38e2b5d5703bdb4b91dc26c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: aa8823631eab711945f593fe35a9466ce68cccb1c950c5aef153305acd4b4d86e92633070a24fbd3b7f86cbcfaf59eb1d35cd5c77288075dd21e93be3c1587a2
|
|
7
|
+
data.tar.gz: 9bdfa43e88ccb8ad26b4f29e6138801f98d3af0c5514ede9b5a4b88c3753ec14afbff4b0f711abb96b02430b17ae60320beffa8a0c5868b2be52f77411d8e2ed
|
|
@@ -591,10 +591,165 @@ select{
|
|
|
591
591
|
outline: 1px solid ButtonText;
|
|
592
592
|
outline: 1px auto -webkit-focus-ring-color
|
|
593
593
|
}
|
|
594
|
-
|
|
594
|
+
|
|
595
|
+
:root{
|
|
596
|
+
--coco-colors-transparent: transparent;
|
|
597
|
+
--coco-colors-current: currentColor;
|
|
598
|
+
--coco-colors-black: #000000;
|
|
599
|
+
--coco-colors-white: #FFFFFF;
|
|
600
|
+
--coco-colors-gray-50: #F9FAFB;
|
|
601
|
+
--coco-colors-gray-100: #F3F4F6;
|
|
602
|
+
--coco-colors-gray-200: #E5E7EB;
|
|
603
|
+
--coco-colors-gray-300: #D1D5DB;
|
|
604
|
+
--coco-colors-gray-400: #9CA3AF;
|
|
605
|
+
--coco-colors-gray-500: #6B7280;
|
|
606
|
+
--coco-colors-gray-600: #4B5563;
|
|
607
|
+
--coco-colors-gray-700: #374151;
|
|
608
|
+
--coco-colors-gray-800: #1F2937;
|
|
609
|
+
--coco-colors-gray-900: #111827;
|
|
610
|
+
--coco-colors-green-50: #E8F3F1;
|
|
611
|
+
--coco-colors-green-100: #D1E7E2;
|
|
612
|
+
--coco-colors-green-200: #A3CFC5;
|
|
613
|
+
--coco-colors-green-300: #76B8AA;
|
|
614
|
+
--coco-colors-green-400: #48A08D;
|
|
615
|
+
--coco-colors-green-500: #1A8871;
|
|
616
|
+
--coco-colors-green-600: #137464;
|
|
617
|
+
--coco-colors-green-700: #0D6159;
|
|
618
|
+
--coco-colors-green-800: #084C4E;
|
|
619
|
+
--coco-colors-green-900: #013C43;
|
|
620
|
+
--coco-colors-red-50: #FEF2F2;
|
|
621
|
+
--coco-colors-red-100: #FEE2E2;
|
|
622
|
+
--coco-colors-red-200: #FECACA;
|
|
623
|
+
--coco-colors-red-300: #FCA5A5;
|
|
624
|
+
--coco-colors-red-400: #F87171;
|
|
625
|
+
--coco-colors-red-500: #EF4444;
|
|
626
|
+
--coco-colors-red-600: #DC2626;
|
|
627
|
+
--coco-colors-red-700: #B91C1C;
|
|
628
|
+
--coco-colors-red-800: #991B1B;
|
|
629
|
+
--coco-colors-red-900: #7F1D1D;
|
|
630
|
+
--coco-colors-amber-50: #FFFBEB;
|
|
631
|
+
--coco-colors-amber-100: #FEF3C7;
|
|
632
|
+
--coco-colors-amber-200: #FDE68A;
|
|
633
|
+
--coco-colors-amber-300: #FCD34D;
|
|
634
|
+
--coco-colors-amber-400: #FBBF24;
|
|
635
|
+
--coco-colors-amber-500: #F59E0B;
|
|
636
|
+
--coco-colors-amber-600: #D97706;
|
|
637
|
+
--coco-colors-amber-700: #B45309;
|
|
638
|
+
--coco-colors-amber-800: #92400E;
|
|
639
|
+
--coco-colors-amber-900: #78350F;
|
|
640
|
+
--coco-colors-blue-50: #F0F9FF;
|
|
641
|
+
--coco-colors-blue-100: #E0F2FE;
|
|
642
|
+
--coco-colors-blue-200: #BAE6FD;
|
|
643
|
+
--coco-colors-blue-300: #7DD3FC;
|
|
644
|
+
--coco-colors-blue-400: #38BDF8;
|
|
645
|
+
--coco-colors-blue-500: #0EA5E9;
|
|
646
|
+
--coco-colors-blue-600: #0284C7;
|
|
647
|
+
--coco-colors-blue-700: #0369A1;
|
|
648
|
+
--coco-colors-blue-800: #075985;
|
|
649
|
+
--coco-colors-blue-900: #0C4A6E;
|
|
650
|
+
--coco-colors-teal-50: #F0FDFA;
|
|
651
|
+
--coco-colors-teal-100: #CCFBF1;
|
|
652
|
+
--coco-colors-teal-200: #99F6E4;
|
|
653
|
+
--coco-colors-teal-300: #5EEAD4;
|
|
654
|
+
--coco-colors-teal-400: #2DD4BF;
|
|
655
|
+
--coco-colors-teal-500: #14B8A6;
|
|
656
|
+
--coco-colors-teal-600: #0D9488;
|
|
657
|
+
--coco-colors-teal-700: #0F766E;
|
|
658
|
+
--coco-colors-teal-800: #115E59;
|
|
659
|
+
--coco-colors-teal-900: #134E4A;
|
|
660
|
+
--coco-colors-primary-50: #E8F3F1;
|
|
661
|
+
--coco-colors-primary-100: #D1E7E2;
|
|
662
|
+
--coco-colors-primary-200: #A3CFC5;
|
|
663
|
+
--coco-colors-primary-300: #76B8AA;
|
|
664
|
+
--coco-colors-primary-400: #48A08D;
|
|
665
|
+
--coco-colors-primary-500: #1A8871;
|
|
666
|
+
--coco-colors-primary-600: #137464;
|
|
667
|
+
--coco-colors-primary-700: #0D6159;
|
|
668
|
+
--coco-colors-primary-800: #084C4E;
|
|
669
|
+
--coco-colors-primary-900: #013C43;
|
|
670
|
+
--coco-colors-positive-50: #E8F3F1;
|
|
671
|
+
--coco-colors-positive-100: #D1E7E2;
|
|
672
|
+
--coco-colors-positive-200: #A3CFC5;
|
|
673
|
+
--coco-colors-positive-300: #76B8AA;
|
|
674
|
+
--coco-colors-positive-400: #48A08D;
|
|
675
|
+
--coco-colors-positive-500: #1A8871;
|
|
676
|
+
--coco-colors-positive-600: #137464;
|
|
677
|
+
--coco-colors-positive-700: #0D6159;
|
|
678
|
+
--coco-colors-positive-800: #084C4E;
|
|
679
|
+
--coco-colors-positive-900: #013C43;
|
|
680
|
+
--coco-colors-negative-50: #FEF2F2;
|
|
681
|
+
--coco-colors-negative-100: #FEE2E2;
|
|
682
|
+
--coco-colors-negative-200: #FECACA;
|
|
683
|
+
--coco-colors-negative-300: #FCA5A5;
|
|
684
|
+
--coco-colors-negative-400: #F87171;
|
|
685
|
+
--coco-colors-negative-500: #EF4444;
|
|
686
|
+
--coco-colors-negative-600: #DC2626;
|
|
687
|
+
--coco-colors-negative-700: #B91C1C;
|
|
688
|
+
--coco-colors-negative-800: #991B1B;
|
|
689
|
+
--coco-colors-negative-900: #7F1D1D;
|
|
690
|
+
--coco-colors-warning-50: #FFFBEB;
|
|
691
|
+
--coco-colors-warning-100: #FEF3C7;
|
|
692
|
+
--coco-colors-warning-200: #FDE68A;
|
|
693
|
+
--coco-colors-warning-300: #FCD34D;
|
|
694
|
+
--coco-colors-warning-400: #FBBF24;
|
|
695
|
+
--coco-colors-warning-500: #F59E0B;
|
|
696
|
+
--coco-colors-warning-600: #D97706;
|
|
697
|
+
--coco-colors-warning-700: #B45309;
|
|
698
|
+
--coco-colors-warning-800: #92400E;
|
|
699
|
+
--coco-colors-warning-900: #78350F;
|
|
700
|
+
--coco-colors-info-50: #F0F9FF;
|
|
701
|
+
--coco-colors-info-100: #E0F2FE;
|
|
702
|
+
--coco-colors-info-200: #BAE6FD;
|
|
703
|
+
--coco-colors-info-300: #7DD3FC;
|
|
704
|
+
--coco-colors-info-400: #38BDF8;
|
|
705
|
+
--coco-colors-info-500: #0EA5E9;
|
|
706
|
+
--coco-colors-info-600: #0284C7;
|
|
707
|
+
--coco-colors-info-700: #0369A1;
|
|
708
|
+
--coco-colors-info-800: #075985;
|
|
709
|
+
--coco-colors-info-900: #0C4A6E;
|
|
710
|
+
--coco-colors-background-header: #427484;
|
|
711
|
+
--coco-colors-background-light-1: #FFFFFF;
|
|
712
|
+
--coco-colors-background-light-2: #F9FAFB;
|
|
713
|
+
--coco-colors-background-light-3: #F3F4F6;
|
|
714
|
+
--coco-colors-background-dark-1: #111827;
|
|
715
|
+
--coco-colors-background-dark-2: #1F2937;
|
|
716
|
+
--coco-colors-background-dark-3: #374151;
|
|
717
|
+
--coco-colors-background-primary: #1A8871;
|
|
718
|
+
--coco-colors-background-primary-light: #D1E7E2;
|
|
719
|
+
--coco-colors-background-negative: #DC2626;
|
|
720
|
+
--coco-colors-background-negative-light: #FEE2E2;
|
|
721
|
+
--coco-colors-background-warning: #F59E0B;
|
|
722
|
+
--coco-colors-background-warning-light: #FFFBEB;
|
|
723
|
+
--coco-colors-background-positive: #1A8871;
|
|
724
|
+
--coco-colors-background-positive-light: #D1E7E2;
|
|
725
|
+
--coco-colors-background-info: #0284C7;
|
|
726
|
+
--coco-colors-background-info-light: #E0F2FE;
|
|
727
|
+
--coco-colors-content-dark-1: #111827;
|
|
728
|
+
--coco-colors-content-dark-2: #1F2937;
|
|
729
|
+
--coco-colors-content-dark-3: #4B5563;
|
|
730
|
+
--coco-colors-content-dark-muted: #9CA3AF;
|
|
731
|
+
--coco-colors-content-light-1: #FFFFFF;
|
|
732
|
+
--coco-colors-content-light-2: #E5E7EB;
|
|
733
|
+
--coco-colors-content-light-muted: #9CA3AF;
|
|
734
|
+
--coco-colors-content-primary: #1A8871;
|
|
735
|
+
--coco-colors-content-primary-dark: #137464;
|
|
736
|
+
--coco-colors-content-primary-inverse: #76B8AA;
|
|
737
|
+
--coco-colors-content-primary-inverse-vivid: #009979;
|
|
738
|
+
--coco-colors-content-negative: #DC2626;
|
|
739
|
+
--coco-colors-content-negative-dark: #B91C1C;
|
|
740
|
+
--coco-colors-content-negative-inverse: #FCA5A5;
|
|
741
|
+
--coco-colors-content-warning: #D97706;
|
|
742
|
+
--coco-colors-content-warning-dark: #B45309;
|
|
743
|
+
--coco-colors-content-warning-inverse: #FCD34D;
|
|
744
|
+
--coco-colors-content-positive: #1A8871;
|
|
745
|
+
--coco-colors-content-positive-dark: #137464;
|
|
746
|
+
--coco-colors-content-positive-inverse: #76B8AA;
|
|
747
|
+
--coco-colors-content-info: #0284C7;
|
|
748
|
+
--coco-colors-content-info-dark: #0369A1;
|
|
749
|
+
--coco-colors-content-info-inverse: #7DD3FC;
|
|
595
750
|
--snackbar-bottom-offset: 2rem;
|
|
596
|
-
--app-height: 100
|
|
597
|
-
|
|
751
|
+
--app-height: 100%
|
|
752
|
+
}
|
|
598
753
|
|
|
599
754
|
html{
|
|
600
755
|
scroll-behavior: smooth;
|
|
@@ -731,6 +886,10 @@ select{
|
|
|
731
886
|
--tw-contain-style:
|
|
732
887
|
}
|
|
733
888
|
|
|
889
|
+
:root {
|
|
890
|
+
--button-border-radius: 44px;
|
|
891
|
+
}
|
|
892
|
+
|
|
734
893
|
.coco-button-wrapper{
|
|
735
894
|
display: contents !important
|
|
736
895
|
}
|
|
@@ -864,7 +1023,7 @@ select{
|
|
|
864
1023
|
transition-property: all;
|
|
865
1024
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
866
1025
|
transition-duration: 150ms;
|
|
867
|
-
border-radius:
|
|
1026
|
+
border-radius: var(--button-border-radius)
|
|
868
1027
|
}
|
|
869
1028
|
|
|
870
1029
|
[data-coco].coco-button[data-theme] .button-content{
|
|
@@ -2225,7 +2384,7 @@ select{
|
|
|
2225
2384
|
[data-coco][data-component="button-group"] {
|
|
2226
2385
|
width: -moz-fit-content;
|
|
2227
2386
|
width: fit-content;
|
|
2228
|
-
border-radius:
|
|
2387
|
+
border-radius: var(--button-border-radius);
|
|
2229
2388
|
}
|
|
2230
2389
|
|
|
2231
2390
|
[data-coco][data-component="button-group"][data-collapsible="true"]{
|
|
@@ -2345,6 +2504,10 @@ select{
|
|
|
2345
2504
|
line-height: 16px
|
|
2346
2505
|
}
|
|
2347
2506
|
|
|
2507
|
+
[data-coco][data-component="confirm-panel"] .coco-button {
|
|
2508
|
+
border-radius: var(--button-border-radius) !important;
|
|
2509
|
+
}
|
|
2510
|
+
|
|
2348
2511
|
[data-coco][data-component="image-picker-button"]{
|
|
2349
2512
|
display: contents
|
|
2350
2513
|
}
|
|
@@ -2624,7 +2787,7 @@ select{
|
|
|
2624
2787
|
background-color: rgba(0, 12, 39, 0.06);
|
|
2625
2788
|
padding: 0.25rem;
|
|
2626
2789
|
|
|
2627
|
-
border-radius:
|
|
2790
|
+
border-radius: var(--button-border-radius);
|
|
2628
2791
|
width: -moz-fit-content;
|
|
2629
2792
|
width: fit-content
|
|
2630
2793
|
}
|
|
@@ -7280,112 +7280,6 @@ var require_module_cjs = __commonJS({
|
|
|
7280
7280
|
});
|
|
7281
7281
|
return () => release(effectReference);
|
|
7282
7282
|
}
|
|
7283
|
-
function dispatch(el, name, detail = {}) {
|
|
7284
|
-
el.dispatchEvent(
|
|
7285
|
-
new CustomEvent(name, {
|
|
7286
|
-
detail,
|
|
7287
|
-
bubbles: true,
|
|
7288
|
-
// Allows events to pass the shadow DOM barrier.
|
|
7289
|
-
composed: true,
|
|
7290
|
-
cancelable: true
|
|
7291
|
-
})
|
|
7292
|
-
);
|
|
7293
|
-
}
|
|
7294
|
-
function walk(el, callback) {
|
|
7295
|
-
if (typeof ShadowRoot === "function" && el instanceof ShadowRoot) {
|
|
7296
|
-
Array.from(el.children).forEach((el2) => walk(el2, callback));
|
|
7297
|
-
return;
|
|
7298
|
-
}
|
|
7299
|
-
let skip = false;
|
|
7300
|
-
callback(el, () => skip = true);
|
|
7301
|
-
if (skip)
|
|
7302
|
-
return;
|
|
7303
|
-
let node = el.firstElementChild;
|
|
7304
|
-
while (node) {
|
|
7305
|
-
walk(node, callback, false);
|
|
7306
|
-
node = node.nextElementSibling;
|
|
7307
|
-
}
|
|
7308
|
-
}
|
|
7309
|
-
function warn(message, ...args) {
|
|
7310
|
-
console.warn(`Alpine Warning: ${message}`, ...args);
|
|
7311
|
-
}
|
|
7312
|
-
var started = false;
|
|
7313
|
-
function start() {
|
|
7314
|
-
if (started)
|
|
7315
|
-
warn("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems.");
|
|
7316
|
-
started = true;
|
|
7317
|
-
if (!document.body)
|
|
7318
|
-
warn("Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?");
|
|
7319
|
-
dispatch(document, "alpine:init");
|
|
7320
|
-
dispatch(document, "alpine:initializing");
|
|
7321
|
-
startObservingMutations();
|
|
7322
|
-
onElAdded((el) => initTree(el, walk));
|
|
7323
|
-
onElRemoved((el) => destroyTree(el));
|
|
7324
|
-
onAttributesAdded((el, attrs) => {
|
|
7325
|
-
directives(el, attrs).forEach((handle) => handle());
|
|
7326
|
-
});
|
|
7327
|
-
let outNestedComponents = (el) => !closestRoot(el.parentElement, true);
|
|
7328
|
-
Array.from(document.querySelectorAll(allSelectors().join(","))).filter(outNestedComponents).forEach((el) => {
|
|
7329
|
-
initTree(el);
|
|
7330
|
-
});
|
|
7331
|
-
dispatch(document, "alpine:initialized");
|
|
7332
|
-
}
|
|
7333
|
-
var rootSelectorCallbacks = [];
|
|
7334
|
-
var initSelectorCallbacks = [];
|
|
7335
|
-
function rootSelectors() {
|
|
7336
|
-
return rootSelectorCallbacks.map((fn) => fn());
|
|
7337
|
-
}
|
|
7338
|
-
function allSelectors() {
|
|
7339
|
-
return rootSelectorCallbacks.concat(initSelectorCallbacks).map((fn) => fn());
|
|
7340
|
-
}
|
|
7341
|
-
function addRootSelector(selectorCallback) {
|
|
7342
|
-
rootSelectorCallbacks.push(selectorCallback);
|
|
7343
|
-
}
|
|
7344
|
-
function addInitSelector(selectorCallback) {
|
|
7345
|
-
initSelectorCallbacks.push(selectorCallback);
|
|
7346
|
-
}
|
|
7347
|
-
function closestRoot(el, includeInitSelectors = false) {
|
|
7348
|
-
return findClosest(el, (element) => {
|
|
7349
|
-
const selectors = includeInitSelectors ? allSelectors() : rootSelectors();
|
|
7350
|
-
if (selectors.some((selector) => element.matches(selector)))
|
|
7351
|
-
return true;
|
|
7352
|
-
});
|
|
7353
|
-
}
|
|
7354
|
-
function findClosest(el, callback) {
|
|
7355
|
-
if (!el)
|
|
7356
|
-
return;
|
|
7357
|
-
if (callback(el))
|
|
7358
|
-
return el;
|
|
7359
|
-
if (el._x_teleportBack)
|
|
7360
|
-
el = el._x_teleportBack;
|
|
7361
|
-
if (!el.parentElement)
|
|
7362
|
-
return;
|
|
7363
|
-
return findClosest(el.parentElement, callback);
|
|
7364
|
-
}
|
|
7365
|
-
function isRoot(el) {
|
|
7366
|
-
return rootSelectors().some((selector) => el.matches(selector));
|
|
7367
|
-
}
|
|
7368
|
-
var initInterceptors = [];
|
|
7369
|
-
function interceptInit(callback) {
|
|
7370
|
-
initInterceptors.push(callback);
|
|
7371
|
-
}
|
|
7372
|
-
function initTree(el, walker = walk, intercept = () => {
|
|
7373
|
-
}) {
|
|
7374
|
-
deferHandlingDirectives(() => {
|
|
7375
|
-
walker(el, (el2, skip) => {
|
|
7376
|
-
intercept(el2, skip);
|
|
7377
|
-
initInterceptors.forEach((i2) => i2(el2, skip));
|
|
7378
|
-
directives(el2, el2.attributes).forEach((handle) => handle());
|
|
7379
|
-
el2._x_ignore && skip();
|
|
7380
|
-
});
|
|
7381
|
-
});
|
|
7382
|
-
}
|
|
7383
|
-
function destroyTree(root, walker = walk) {
|
|
7384
|
-
walker(root, (el) => {
|
|
7385
|
-
cleanupAttributes(el);
|
|
7386
|
-
cleanupElement(el);
|
|
7387
|
-
});
|
|
7388
|
-
}
|
|
7389
7283
|
var onAttributeAddeds = [];
|
|
7390
7284
|
var onElRemoveds = [];
|
|
7391
7285
|
var onElAddeds = [];
|
|
@@ -7519,7 +7413,6 @@ var require_module_cjs = __commonJS({
|
|
|
7519
7413
|
if (addedNodes.has(node))
|
|
7520
7414
|
continue;
|
|
7521
7415
|
onElRemoveds.forEach((i2) => i2(node));
|
|
7522
|
-
destroyTree(node);
|
|
7523
7416
|
}
|
|
7524
7417
|
addedNodes.forEach((node) => {
|
|
7525
7418
|
node._x_ignoreSelf = true;
|
|
@@ -7598,7 +7491,7 @@ var require_module_cjs = __commonJS({
|
|
|
7598
7491
|
) || objects[objects.length - 1];
|
|
7599
7492
|
const descriptor = Object.getOwnPropertyDescriptor(target, name);
|
|
7600
7493
|
if ((descriptor == null ? void 0 : descriptor.set) && (descriptor == null ? void 0 : descriptor.get))
|
|
7601
|
-
return
|
|
7494
|
+
return descriptor.set.call(thisProxy, value) || true;
|
|
7602
7495
|
return Reflect.set(target, name, value);
|
|
7603
7496
|
}
|
|
7604
7497
|
};
|
|
@@ -7609,7 +7502,7 @@ var require_module_cjs = __commonJS({
|
|
|
7609
7502
|
return acc;
|
|
7610
7503
|
}, {});
|
|
7611
7504
|
}
|
|
7612
|
-
function
|
|
7505
|
+
function initInterceptors(data2) {
|
|
7613
7506
|
let isObject2 = (val) => typeof val === "object" && !Array.isArray(val) && val !== null;
|
|
7614
7507
|
let recurse = (obj, basePath = "") => {
|
|
7615
7508
|
Object.entries(Object.getOwnPropertyDescriptors(obj)).forEach(([key, { value, enumerable }]) => {
|
|
@@ -7833,6 +7726,9 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
7833
7726
|
}
|
|
7834
7727
|
};
|
|
7835
7728
|
}
|
|
7729
|
+
function directiveExists(name) {
|
|
7730
|
+
return Object.keys(directiveHandlers).includes(name);
|
|
7731
|
+
}
|
|
7836
7732
|
function directives(el, attributes, originalAttributeOverride) {
|
|
7837
7733
|
attributes = Array.from(attributes);
|
|
7838
7734
|
if (el._x_virtualDirectives) {
|
|
@@ -7972,6 +7868,132 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
7972
7868
|
let typeB = directiveOrder.indexOf(b2.type) === -1 ? DEFAULT : b2.type;
|
|
7973
7869
|
return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB);
|
|
7974
7870
|
}
|
|
7871
|
+
function dispatch(el, name, detail = {}) {
|
|
7872
|
+
el.dispatchEvent(
|
|
7873
|
+
new CustomEvent(name, {
|
|
7874
|
+
detail,
|
|
7875
|
+
bubbles: true,
|
|
7876
|
+
// Allows events to pass the shadow DOM barrier.
|
|
7877
|
+
composed: true,
|
|
7878
|
+
cancelable: true
|
|
7879
|
+
})
|
|
7880
|
+
);
|
|
7881
|
+
}
|
|
7882
|
+
function walk(el, callback) {
|
|
7883
|
+
if (typeof ShadowRoot === "function" && el instanceof ShadowRoot) {
|
|
7884
|
+
Array.from(el.children).forEach((el2) => walk(el2, callback));
|
|
7885
|
+
return;
|
|
7886
|
+
}
|
|
7887
|
+
let skip = false;
|
|
7888
|
+
callback(el, () => skip = true);
|
|
7889
|
+
if (skip)
|
|
7890
|
+
return;
|
|
7891
|
+
let node = el.firstElementChild;
|
|
7892
|
+
while (node) {
|
|
7893
|
+
walk(node, callback, false);
|
|
7894
|
+
node = node.nextElementSibling;
|
|
7895
|
+
}
|
|
7896
|
+
}
|
|
7897
|
+
function warn(message, ...args) {
|
|
7898
|
+
console.warn(`Alpine Warning: ${message}`, ...args);
|
|
7899
|
+
}
|
|
7900
|
+
var started = false;
|
|
7901
|
+
function start() {
|
|
7902
|
+
if (started)
|
|
7903
|
+
warn("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems.");
|
|
7904
|
+
started = true;
|
|
7905
|
+
if (!document.body)
|
|
7906
|
+
warn("Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?");
|
|
7907
|
+
dispatch(document, "alpine:init");
|
|
7908
|
+
dispatch(document, "alpine:initializing");
|
|
7909
|
+
startObservingMutations();
|
|
7910
|
+
onElAdded((el) => initTree(el, walk));
|
|
7911
|
+
onElRemoved((el) => destroyTree(el));
|
|
7912
|
+
onAttributesAdded((el, attrs) => {
|
|
7913
|
+
directives(el, attrs).forEach((handle) => handle());
|
|
7914
|
+
});
|
|
7915
|
+
let outNestedComponents = (el) => !closestRoot(el.parentElement, true);
|
|
7916
|
+
Array.from(document.querySelectorAll(allSelectors().join(","))).filter(outNestedComponents).forEach((el) => {
|
|
7917
|
+
initTree(el);
|
|
7918
|
+
});
|
|
7919
|
+
dispatch(document, "alpine:initialized");
|
|
7920
|
+
setTimeout(() => {
|
|
7921
|
+
warnAboutMissingPlugins();
|
|
7922
|
+
});
|
|
7923
|
+
}
|
|
7924
|
+
var rootSelectorCallbacks = [];
|
|
7925
|
+
var initSelectorCallbacks = [];
|
|
7926
|
+
function rootSelectors() {
|
|
7927
|
+
return rootSelectorCallbacks.map((fn) => fn());
|
|
7928
|
+
}
|
|
7929
|
+
function allSelectors() {
|
|
7930
|
+
return rootSelectorCallbacks.concat(initSelectorCallbacks).map((fn) => fn());
|
|
7931
|
+
}
|
|
7932
|
+
function addRootSelector(selectorCallback) {
|
|
7933
|
+
rootSelectorCallbacks.push(selectorCallback);
|
|
7934
|
+
}
|
|
7935
|
+
function addInitSelector(selectorCallback) {
|
|
7936
|
+
initSelectorCallbacks.push(selectorCallback);
|
|
7937
|
+
}
|
|
7938
|
+
function closestRoot(el, includeInitSelectors = false) {
|
|
7939
|
+
return findClosest(el, (element) => {
|
|
7940
|
+
const selectors = includeInitSelectors ? allSelectors() : rootSelectors();
|
|
7941
|
+
if (selectors.some((selector) => element.matches(selector)))
|
|
7942
|
+
return true;
|
|
7943
|
+
});
|
|
7944
|
+
}
|
|
7945
|
+
function findClosest(el, callback) {
|
|
7946
|
+
if (!el)
|
|
7947
|
+
return;
|
|
7948
|
+
if (callback(el))
|
|
7949
|
+
return el;
|
|
7950
|
+
if (el._x_teleportBack)
|
|
7951
|
+
el = el._x_teleportBack;
|
|
7952
|
+
if (!el.parentElement)
|
|
7953
|
+
return;
|
|
7954
|
+
return findClosest(el.parentElement, callback);
|
|
7955
|
+
}
|
|
7956
|
+
function isRoot(el) {
|
|
7957
|
+
return rootSelectors().some((selector) => el.matches(selector));
|
|
7958
|
+
}
|
|
7959
|
+
var initInterceptors2 = [];
|
|
7960
|
+
function interceptInit(callback) {
|
|
7961
|
+
initInterceptors2.push(callback);
|
|
7962
|
+
}
|
|
7963
|
+
function initTree(el, walker = walk, intercept = () => {
|
|
7964
|
+
}) {
|
|
7965
|
+
deferHandlingDirectives(() => {
|
|
7966
|
+
walker(el, (el2, skip) => {
|
|
7967
|
+
intercept(el2, skip);
|
|
7968
|
+
initInterceptors2.forEach((i2) => i2(el2, skip));
|
|
7969
|
+
directives(el2, el2.attributes).forEach((handle) => handle());
|
|
7970
|
+
el2._x_ignore && skip();
|
|
7971
|
+
});
|
|
7972
|
+
});
|
|
7973
|
+
}
|
|
7974
|
+
function destroyTree(root, walker = walk) {
|
|
7975
|
+
walker(root, (el) => {
|
|
7976
|
+
cleanupAttributes(el);
|
|
7977
|
+
cleanupElement(el);
|
|
7978
|
+
});
|
|
7979
|
+
}
|
|
7980
|
+
function warnAboutMissingPlugins() {
|
|
7981
|
+
let pluginDirectives = [
|
|
7982
|
+
["ui", "dialog", ["[x-dialog], [x-popover]"]],
|
|
7983
|
+
["anchor", "anchor", ["[x-anchor]"]],
|
|
7984
|
+
["sort", "sort", ["[x-sort]"]]
|
|
7985
|
+
];
|
|
7986
|
+
pluginDirectives.forEach(([plugin2, directive2, selectors]) => {
|
|
7987
|
+
if (directiveExists(directive2))
|
|
7988
|
+
return;
|
|
7989
|
+
selectors.some((selector) => {
|
|
7990
|
+
if (document.querySelector(selector)) {
|
|
7991
|
+
warn(`found "${selector}", but missing ${plugin2} plugin`);
|
|
7992
|
+
return true;
|
|
7993
|
+
}
|
|
7994
|
+
});
|
|
7995
|
+
});
|
|
7996
|
+
}
|
|
7975
7997
|
var tickStack = [];
|
|
7976
7998
|
var isHolding = false;
|
|
7977
7999
|
function nextTick(callback = () => {
|
|
@@ -8232,7 +8254,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
8232
8254
|
let carry = Promise.all([
|
|
8233
8255
|
el2._x_hidePromise,
|
|
8234
8256
|
...(el2._x_hideChildren || []).map(hideAfterChildren)
|
|
8235
|
-
]).then(([i2]) => i2());
|
|
8257
|
+
]).then(([i2]) => i2 == null ? void 0 : i2());
|
|
8236
8258
|
delete el2._x_hidePromise;
|
|
8237
8259
|
delete el2._x_hideChildren;
|
|
8238
8260
|
return carry;
|
|
@@ -8663,7 +8685,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
8663
8685
|
if (typeof value === "object" && value !== null && value.hasOwnProperty("init") && typeof value.init === "function") {
|
|
8664
8686
|
stores[name].init();
|
|
8665
8687
|
}
|
|
8666
|
-
|
|
8688
|
+
initInterceptors(stores[name]);
|
|
8667
8689
|
}
|
|
8668
8690
|
function getStores() {
|
|
8669
8691
|
return stores;
|
|
@@ -8745,7 +8767,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
8745
8767
|
get raw() {
|
|
8746
8768
|
return raw;
|
|
8747
8769
|
},
|
|
8748
|
-
version: "3.
|
|
8770
|
+
version: "3.14.1",
|
|
8749
8771
|
flushAndStopDeferringMutations,
|
|
8750
8772
|
dontAutoEvaluateFunctions,
|
|
8751
8773
|
disableEffectScheduling,
|
|
@@ -8951,8 +8973,10 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
8951
8973
|
};
|
|
8952
8974
|
mutateDom(() => {
|
|
8953
8975
|
placeInDom(clone2, target, modifiers);
|
|
8954
|
-
|
|
8955
|
-
|
|
8976
|
+
skipDuringClone(() => {
|
|
8977
|
+
initTree(clone2);
|
|
8978
|
+
clone2._x_ignore = true;
|
|
8979
|
+
})();
|
|
8956
8980
|
});
|
|
8957
8981
|
el._x_teleportPutBack = () => {
|
|
8958
8982
|
let target2 = getTarget(expression);
|
|
@@ -9022,10 +9046,12 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
9022
9046
|
e2.stopPropagation();
|
|
9023
9047
|
next(e2);
|
|
9024
9048
|
});
|
|
9025
|
-
if (modifiers.includes("
|
|
9049
|
+
if (modifiers.includes("once")) {
|
|
9026
9050
|
handler4 = wrapHandler(handler4, (next, e2) => {
|
|
9027
|
-
|
|
9051
|
+
next(e2);
|
|
9052
|
+
listenerTarget.removeEventListener(event, handler4, options);
|
|
9028
9053
|
});
|
|
9054
|
+
}
|
|
9029
9055
|
if (modifiers.includes("away") || modifiers.includes("outside")) {
|
|
9030
9056
|
listenerTarget = document;
|
|
9031
9057
|
handler4 = wrapHandler(handler4, (next, e2) => {
|
|
@@ -9040,20 +9066,18 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
9040
9066
|
next(e2);
|
|
9041
9067
|
});
|
|
9042
9068
|
}
|
|
9043
|
-
if (modifiers.includes("
|
|
9069
|
+
if (modifiers.includes("self"))
|
|
9044
9070
|
handler4 = wrapHandler(handler4, (next, e2) => {
|
|
9045
|
-
next(e2);
|
|
9046
|
-
listenerTarget.removeEventListener(event, handler4, options);
|
|
9071
|
+
e2.target === el && next(e2);
|
|
9047
9072
|
});
|
|
9048
|
-
|
|
9049
|
-
|
|
9050
|
-
if (isKeyEvent(event)) {
|
|
9073
|
+
if (isKeyEvent(event) || isClickEvent(event)) {
|
|
9074
|
+
handler4 = wrapHandler(handler4, (next, e2) => {
|
|
9051
9075
|
if (isListeningForASpecificKeyThatHasntBeenPressed(e2, modifiers)) {
|
|
9052
9076
|
return;
|
|
9053
9077
|
}
|
|
9054
|
-
|
|
9055
|
-
|
|
9056
|
-
}
|
|
9078
|
+
next(e2);
|
|
9079
|
+
});
|
|
9080
|
+
}
|
|
9057
9081
|
listenerTarget.addEventListener(event, handler4, options);
|
|
9058
9082
|
return () => {
|
|
9059
9083
|
listenerTarget.removeEventListener(event, handler4, options);
|
|
@@ -9078,9 +9102,12 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
9078
9102
|
function isKeyEvent(event) {
|
|
9079
9103
|
return ["keydown", "keyup"].includes(event);
|
|
9080
9104
|
}
|
|
9105
|
+
function isClickEvent(event) {
|
|
9106
|
+
return ["contextmenu", "click", "mouse"].some((i2) => event.includes(i2));
|
|
9107
|
+
}
|
|
9081
9108
|
function isListeningForASpecificKeyThatHasntBeenPressed(e2, modifiers) {
|
|
9082
9109
|
let keyModifiers = modifiers.filter((i2) => {
|
|
9083
|
-
return !["window", "document", "prevent", "stop", "once", "capture"].includes(i2);
|
|
9110
|
+
return !["window", "document", "prevent", "stop", "once", "capture", "self", "away", "outside", "passive"].includes(i2);
|
|
9084
9111
|
});
|
|
9085
9112
|
if (keyModifiers.includes("debounce")) {
|
|
9086
9113
|
let debounceIndex = keyModifiers.indexOf("debounce");
|
|
@@ -9104,6 +9131,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
9104
9131
|
return e2[`${modifier}Key`];
|
|
9105
9132
|
});
|
|
9106
9133
|
if (activelyPressedKeyModifiers.length === selectedSystemKeyModifiers.length) {
|
|
9134
|
+
if (isClickEvent(e2.type))
|
|
9135
|
+
return false;
|
|
9107
9136
|
if (keyToModifiers(e2.key).includes(keyModifiers[0]))
|
|
9108
9137
|
return false;
|
|
9109
9138
|
}
|
|
@@ -9126,6 +9155,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
9126
9155
|
"left": "arrow-left",
|
|
9127
9156
|
"right": "arrow-right",
|
|
9128
9157
|
"period": ".",
|
|
9158
|
+
"comma": ",",
|
|
9129
9159
|
"equal": "=",
|
|
9130
9160
|
"minus": "-",
|
|
9131
9161
|
"underscore": "_"
|
|
@@ -9180,7 +9210,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
9180
9210
|
setValue(getInputValue(el, modifiers, e2, getValue()));
|
|
9181
9211
|
});
|
|
9182
9212
|
if (modifiers.includes("fill")) {
|
|
9183
|
-
if ([void 0, null, ""].includes(getValue()) || el.type === "checkbox" && Array.isArray(getValue())) {
|
|
9213
|
+
if ([void 0, null, ""].includes(getValue()) || el.type === "checkbox" && Array.isArray(getValue()) || el.tagName.toLowerCase() === "select" && el.multiple) {
|
|
9184
9214
|
setValue(
|
|
9185
9215
|
getInputValue(el, modifiers, { target: el }, getValue())
|
|
9186
9216
|
);
|
|
@@ -9192,7 +9222,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
9192
9222
|
cleanup(() => el._x_removeModelListeners["default"]());
|
|
9193
9223
|
if (el.form) {
|
|
9194
9224
|
let removeResetListener = on(el.form, "reset", [], (e2) => {
|
|
9195
|
-
nextTick(() => el._x_model && el._x_model.set(el
|
|
9225
|
+
nextTick(() => el._x_model && el._x_model.set(getInputValue(el, modifiers, { target: el }, getValue())));
|
|
9196
9226
|
});
|
|
9197
9227
|
cleanup(() => removeResetListener());
|
|
9198
9228
|
}
|
|
@@ -9232,7 +9262,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
9232
9262
|
} else {
|
|
9233
9263
|
newValue = event.target.value;
|
|
9234
9264
|
}
|
|
9235
|
-
return event.target.checked ? currentValue.concat([newValue]) : currentValue.filter((el2) => !checkedAttrLooseCompare2(el2, newValue));
|
|
9265
|
+
return event.target.checked ? currentValue.includes(newValue) ? currentValue : currentValue.concat([newValue]) : currentValue.filter((el2) => !checkedAttrLooseCompare2(el2, newValue));
|
|
9236
9266
|
} else {
|
|
9237
9267
|
return event.target.checked;
|
|
9238
9268
|
}
|
|
@@ -9371,7 +9401,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
|
9371
9401
|
data2 = {};
|
|
9372
9402
|
injectMagics(data2, el);
|
|
9373
9403
|
let reactiveData = reactive(data2);
|
|
9374
|
-
|
|
9404
|
+
initInterceptors(reactiveData);
|
|
9375
9405
|
let undo = addScopeToNode(el, reactiveData);
|
|
9376
9406
|
reactiveData["init"] && evaluate(el, reactiveData["init"]);
|
|
9377
9407
|
cleanup(() => {
|
|
@@ -11419,6 +11449,8 @@ var require_tokens = __commonJS({
|
|
|
11419
11449
|
900: "#134E4A"
|
|
11420
11450
|
}
|
|
11421
11451
|
};
|
|
11452
|
+
var { coco, ...colorVariables } = colors;
|
|
11453
|
+
colorVariables.gray = colors.coco.gray;
|
|
11422
11454
|
var colorAliases = {
|
|
11423
11455
|
primary: {
|
|
11424
11456
|
...colors.green
|
|
@@ -11569,6 +11601,16 @@ var require_tokens = __commonJS({
|
|
|
11569
11601
|
displaySans: "proxima-nova",
|
|
11570
11602
|
bodySans: "proxima-nova",
|
|
11571
11603
|
displaySerif: "merriweather"
|
|
11604
|
+
},
|
|
11605
|
+
variables: {
|
|
11606
|
+
DEFAULT: {
|
|
11607
|
+
coco: {
|
|
11608
|
+
colors: {
|
|
11609
|
+
...colorVariables,
|
|
11610
|
+
...colorAliases
|
|
11611
|
+
}
|
|
11612
|
+
}
|
|
11613
|
+
}
|
|
11572
11614
|
}
|
|
11573
11615
|
};
|
|
11574
11616
|
}
|
|
@@ -15296,7 +15338,7 @@ var alpine_default = import_alpinejs.default;
|
|
|
15296
15338
|
// ../../../package.json
|
|
15297
15339
|
var package_default = {
|
|
15298
15340
|
name: "coveragebook-components",
|
|
15299
|
-
version: "0.19.
|
|
15341
|
+
version: "0.19.2",
|
|
15300
15342
|
repository: "git@github.com:coveragebook/coco.git",
|
|
15301
15343
|
license: "NO LICENSE",
|
|
15302
15344
|
author: "Mark Perkins <mark@coveragebook.com>",
|
|
@@ -15311,9 +15353,10 @@ var package_default = {
|
|
|
15311
15353
|
"css:build": "postcss ./app/assets/css/coco.css -d ./app/assets/build/coco",
|
|
15312
15354
|
"css:dev": "postcss ./app/assets/css/coco.css -d ./app/assets/build/coco/dev",
|
|
15313
15355
|
"css:watch": "postcss ./app/assets/css/coco.css -d ./app/assets/build/coco/dev --watch",
|
|
15314
|
-
"js:build": "node esbuild.
|
|
15315
|
-
"js:dev": "node esbuild.
|
|
15316
|
-
"js:watch": "node esbuild.
|
|
15356
|
+
"js:build": "node esbuild.mjs",
|
|
15357
|
+
"js:dev": "node esbuild.mjs --dev",
|
|
15358
|
+
"js:watch": "node esbuild.mjs --watch",
|
|
15359
|
+
"js:analyse": "node lib/scripts/esbuild-meta.mjs",
|
|
15317
15360
|
"lint:fix": "bundle exec standardrb --fix && prettier --write .",
|
|
15318
15361
|
"lookbook:build": "cd lookbook && npm run build",
|
|
15319
15362
|
prepare: "husky install",
|
|
@@ -15338,14 +15381,14 @@ var package_default = {
|
|
|
15338
15381
|
},
|
|
15339
15382
|
dependencies: {
|
|
15340
15383
|
"@alpinejs/focus": "^3.13.2",
|
|
15341
|
-
"@alpinejs/mask": "^3.
|
|
15384
|
+
"@alpinejs/mask": "^3.14.1",
|
|
15342
15385
|
"@alpinejs/morph": "^3.13.5",
|
|
15343
15386
|
"@jaames/iro": "^5.5.2",
|
|
15344
15387
|
"@percy/cli": "^1.28.8",
|
|
15345
15388
|
"@tailwindcss/container-queries": "^0.1.0",
|
|
15346
15389
|
"@tailwindcss/forms": "^0.5.6",
|
|
15347
15390
|
"alias-hq": "^6.2.2",
|
|
15348
|
-
alpinejs: "^3.
|
|
15391
|
+
alpinejs: "^3.14.1",
|
|
15349
15392
|
autoprefixer: "^10.4.16",
|
|
15350
15393
|
"container-query-polyfill": "^1.0.2",
|
|
15351
15394
|
del: "^7.1.0",
|
|
@@ -15364,7 +15407,7 @@ var package_default = {
|
|
|
15364
15407
|
postcss: "^8.4.38",
|
|
15365
15408
|
"postcss-cli": "^11.0.0",
|
|
15366
15409
|
"postcss-value-parser": "^4.2.0",
|
|
15367
|
-
prettier: "^3.
|
|
15410
|
+
prettier: "^3.3.3",
|
|
15368
15411
|
"release-it": "^17.2.1",
|
|
15369
15412
|
svgo: "^3.0.2",
|
|
15370
15413
|
tailwindcss: "^3.4.3",
|
|
@@ -15390,6 +15433,9 @@ var package_default = {
|
|
|
15390
15433
|
"after:version:bump": "bundle exec rake coco:gem:bump_version[${version}] && bundle && cd lookbook && bundle",
|
|
15391
15434
|
"after:release": "rake coco:gem:release[${version}]"
|
|
15392
15435
|
}
|
|
15436
|
+
},
|
|
15437
|
+
devDependencies: {
|
|
15438
|
+
"@mertasan/tailwindcss-variables": "^2.7.0"
|
|
15393
15439
|
}
|
|
15394
15440
|
};
|
|
15395
15441
|
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
@layer components {
|
|
2
|
+
:root {
|
|
3
|
+
--button-border-radius: 44px;
|
|
4
|
+
}
|
|
5
|
+
|
|
2
6
|
.coco-button-wrapper {
|
|
3
7
|
@apply !contents;
|
|
4
8
|
}
|
|
@@ -83,7 +87,7 @@
|
|
|
83
87
|
|
|
84
88
|
&[data-theme] {
|
|
85
89
|
@apply transition-all overflow-hidden;
|
|
86
|
-
border-radius:
|
|
90
|
+
border-radius: var(--button-border-radius);
|
|
87
91
|
|
|
88
92
|
.button-content {
|
|
89
93
|
@apply font-semibold;
|
|
@@ -16,12 +16,12 @@ module Coco
|
|
|
16
16
|
@sections[alignment] = view_context.render(component, &block)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
def initialize(**
|
|
19
|
+
def initialize(**)
|
|
20
20
|
@sections = {
|
|
21
21
|
start: nil,
|
|
22
22
|
end: nil
|
|
23
23
|
}
|
|
24
|
-
super
|
|
24
|
+
super
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def start_section
|
|
@@ -65,7 +65,7 @@ module Coco
|
|
|
65
65
|
# be used to initialize the component.
|
|
66
66
|
kwargs = run_callbacks(:before_initialize, kwargs, reduce: true)
|
|
67
67
|
|
|
68
|
-
obj = super
|
|
68
|
+
obj = super
|
|
69
69
|
|
|
70
70
|
if obj.instance_of?(Coco::Component)
|
|
71
71
|
raise "`Coco::Component` must be subclassed before use"
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import importGlob from "../lib/scripts/esbuild-plugin-import-glob.mjs";
|
|
2
|
+
import buildIcons from "../lib/scripts/esbuild-plugin-build-icons.mjs";
|
|
3
|
+
import mapAliasedPath from "../lib/scripts/map-aliased-path.mjs";
|
|
4
|
+
import cleanPlugin from "../lib/scripts/esbuild-plugin-clean.mjs";
|
|
5
|
+
import { copy } from "esbuild-plugin-copy";
|
|
6
|
+
import { cocoPath } from "./utils.js";
|
|
7
|
+
|
|
8
|
+
const watch = process.argv.includes("--watch");
|
|
9
|
+
const dev = watch || process.argv.includes("--dev");
|
|
10
|
+
|
|
11
|
+
export default {
|
|
12
|
+
entryPoints: ["coco.js"],
|
|
13
|
+
bundle: true,
|
|
14
|
+
metafile: true,
|
|
15
|
+
outdir: cocoPath("@build"),
|
|
16
|
+
absWorkingDir: cocoPath("@js"),
|
|
17
|
+
entryNames: `[dir]${dev ? "/dev" : ""}/[name]`,
|
|
18
|
+
logLevel: dev ? "warning" : "error",
|
|
19
|
+
plugins: [
|
|
20
|
+
importGlob({
|
|
21
|
+
importMapper: mapAliasedPath,
|
|
22
|
+
}),
|
|
23
|
+
cleanPlugin({
|
|
24
|
+
initialCleanPatterns: [
|
|
25
|
+
"**/*",
|
|
26
|
+
"!coco.css",
|
|
27
|
+
"!coco.js",
|
|
28
|
+
"!tailwind.preset.js",
|
|
29
|
+
],
|
|
30
|
+
}),
|
|
31
|
+
buildIcons(
|
|
32
|
+
cocoPath("@npm/lucide-static/icons"),
|
|
33
|
+
cocoPath("@build/icons"),
|
|
34
|
+
cocoPath("@config")
|
|
35
|
+
),
|
|
36
|
+
copy({
|
|
37
|
+
assets: [
|
|
38
|
+
{
|
|
39
|
+
from: ["./app/assets/img/**/*"],
|
|
40
|
+
to: ["./img"],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
from: ["./app/assets/custom_icons/lucide/**/*"],
|
|
44
|
+
to: ["./icons"],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
from: ["./app/assets/custom_icons/other/**/*"],
|
|
48
|
+
to: ["./icons/custom"],
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
watch,
|
|
52
|
+
}),
|
|
53
|
+
],
|
|
54
|
+
format: "esm",
|
|
55
|
+
platform: "node",
|
|
56
|
+
};
|
data/config/tailwind.preset.js
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
/** @type {import('tailwindcss').Config} */
|
|
2
2
|
|
|
3
3
|
const defaultTheme = require("tailwindcss/defaultTheme");
|
|
4
|
-
const {
|
|
4
|
+
const {
|
|
5
|
+
fontSize,
|
|
6
|
+
fontFamily,
|
|
7
|
+
colors,
|
|
8
|
+
variables,
|
|
9
|
+
screens,
|
|
10
|
+
} = require("./tokens.js");
|
|
5
11
|
|
|
6
12
|
module.exports = {
|
|
7
13
|
theme: {
|
|
8
14
|
colors,
|
|
9
15
|
screens,
|
|
16
|
+
variables,
|
|
10
17
|
fontFamily: {
|
|
11
18
|
display: [fontFamily.displaySans, ...defaultTheme.fontFamily.sans],
|
|
12
19
|
body: [fontFamily.bodySans, ...defaultTheme.fontFamily.sans],
|
|
@@ -58,6 +65,7 @@ module.exports = {
|
|
|
58
65
|
plugins: [
|
|
59
66
|
require("@tailwindcss/forms"),
|
|
60
67
|
require("@tailwindcss/container-queries"),
|
|
68
|
+
require("@mertasan/tailwindcss-variables"),
|
|
61
69
|
require("../app/assets/css/plugins/colors.js"),
|
|
62
70
|
require("../app/assets/css/plugins/icons.js"),
|
|
63
71
|
require("../app/assets/css/plugins/layout.js"),
|
data/config/tokens.js
CHANGED
|
@@ -86,6 +86,9 @@ const colors = {
|
|
|
86
86
|
},
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
+
const { coco, ...colorVariables } = colors;
|
|
90
|
+
colorVariables.gray = colors.coco.gray;
|
|
91
|
+
|
|
89
92
|
const colorAliases = {
|
|
90
93
|
primary: {
|
|
91
94
|
...colors.green,
|
|
@@ -244,4 +247,14 @@ module.exports = {
|
|
|
244
247
|
bodySans: "proxima-nova",
|
|
245
248
|
displaySerif: "merriweather",
|
|
246
249
|
},
|
|
250
|
+
variables: {
|
|
251
|
+
DEFAULT: {
|
|
252
|
+
coco: {
|
|
253
|
+
colors: {
|
|
254
|
+
...colorVariables,
|
|
255
|
+
...colorAliases,
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
},
|
|
259
|
+
},
|
|
247
260
|
};
|
data/lib/coco/options/item.rb
CHANGED
data/lib/coco.rb
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import esbuild from "esbuild";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import fs from "fs";
|
|
4
|
+
import config from "../../config/esbuild.config.mjs";
|
|
5
|
+
|
|
6
|
+
const metafilePath = "tmp/bundle-metadata.json";
|
|
7
|
+
|
|
8
|
+
function ensureDirectoryExistence(filePath) {
|
|
9
|
+
var dirname = path.dirname(filePath);
|
|
10
|
+
if (fs.existsSync(dirname)) {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
ensureDirectoryExistence(dirname);
|
|
14
|
+
fs.mkdirSync(dirname);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
ensureDirectoryExistence(metafilePath);
|
|
18
|
+
|
|
19
|
+
esbuild.build({ ...config, metafile: true }).then((result) => {
|
|
20
|
+
fs.writeFileSync(metafilePath, JSON.stringify(result.metafile));
|
|
21
|
+
console.log("\nā
Bundle metadata file generated.");
|
|
22
|
+
|
|
23
|
+
console.log(
|
|
24
|
+
`š You can now upload '${metafilePath}' to https://esbuild.github.io/analyze/ for bundle analysis.`
|
|
25
|
+
);
|
|
26
|
+
});
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: coveragebook_components
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.19.
|
|
4
|
+
version: 0.19.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mark Perkins
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-
|
|
11
|
+
date: 2024-09-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -1723,6 +1723,7 @@ files:
|
|
|
1723
1723
|
- app/helpers/coco/integration_helper.rb
|
|
1724
1724
|
- app/helpers/coco/modal_helper.rb
|
|
1725
1725
|
- app/helpers/coco/tag_helper.rb
|
|
1726
|
+
- config/esbuild.config.mjs
|
|
1726
1727
|
- config/exports.js
|
|
1727
1728
|
- config/icons.json
|
|
1728
1729
|
- config/locales/coco.en.yml
|
|
@@ -1749,6 +1750,7 @@ files:
|
|
|
1749
1750
|
- lib/generators/coco/templates/component.rb.tt
|
|
1750
1751
|
- lib/generators/coco/templates/preview.rb.tt
|
|
1751
1752
|
- lib/generators/coco/templates/test.rb.tt
|
|
1753
|
+
- lib/scripts/esbuild-meta.mjs
|
|
1752
1754
|
- lib/scripts/esbuild-plugin-build-icons.mjs
|
|
1753
1755
|
- lib/scripts/esbuild-plugin-clean.mjs
|
|
1754
1756
|
- lib/scripts/esbuild-plugin-import-glob.mjs
|