coveragebook_components 0.19.0 ā 0.19.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|