@jackcrane/ui 0.1.21 → 0.1.23

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/dist/jcui.cjs.js CHANGED
@@ -217,7 +217,7 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
217
217
  transform: rotate(360deg);
218
218
  }
219
219
  }
220
- ._card_1ywyn_1 {
220
+ ._card_1wvfe_1 {
221
221
  border-width: var(--border-thickness);
222
222
  border-style: solid;
223
223
  font-size: 1rem;
@@ -226,120 +226,122 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
226
226
  display: flex;
227
227
  flex-direction: column;
228
228
  }
229
- ._pageBackground_1ywyn_11 {
229
+ ._pageBackground_1wvfe_11 {
230
230
  --card-bg: var(--body-bg);
231
231
  --button-bg: var(--body-bg);
232
232
  --card-color: var(--body-color);
233
233
  background-color: var(--body-bg);
234
234
  }
235
- ._card_1ywyn_1 ._title_1ywyn_18 {
235
+ ._card_1wvfe_1 ._title_1wvfe_18 {
236
236
  font-size: 1.25rem;
237
237
  padding: 0.5rem 1rem;
238
238
  border-bottom: var(--border-thickness) solid var(--border-color);
239
239
  background-color: var(--card-bg);
240
240
  }
241
- ._card_1ywyn_1 ._titleCollapsed_1ywyn_25 {
241
+ ._card_1wvfe_1 ._titleCollapsed_1wvfe_25 {
242
242
  border-bottom: 0;
243
243
  }
244
- ._card_1ywyn_1 ._titleContent_1ywyn_29 {
244
+ ._card_1wvfe_1 ._titleContent_1wvfe_29 {
245
245
  display: flex;
246
246
  align-items: center;
247
247
  gap: 0.5rem;
248
248
  }
249
- ._card_1ywyn_1 ._chevronButton_1ywyn_35 {
250
- margin-left: auto;
251
- border: 0;
252
- background: transparent;
253
- color: inherit;
254
- padding: 0;
255
- display: flex;
256
- align-items: center;
249
+ ._card_1wvfe_1 ._titleInteractive_1wvfe_35 {
257
250
  cursor: pointer;
258
251
  }
259
- ._card_1ywyn_1 ._chevron_1ywyn_35 {
252
+ ._card_1wvfe_1 ._chevron_1wvfe_39 {
253
+ margin-left: auto;
260
254
  width: 0.5rem;
261
255
  height: 0.5rem;
262
256
  border-right: 2px solid currentColor;
263
257
  border-bottom: 2px solid currentColor;
264
258
  transition: transform 0.2s ease;
265
259
  flex-shrink: 0;
266
- cursor: pointer;
260
+ cursor: inherit;
267
261
  }
268
- ._card_1ywyn_1 ._chevronExpanded_1ywyn_56 {
262
+ ._card_1wvfe_1 ._chevronExpanded_1wvfe_50 {
269
263
  transform: rotate(45deg);
270
264
  }
271
- ._card_1ywyn_1 ._chevronCollapsed_1ywyn_60 {
265
+ ._card_1wvfe_1 ._chevronCollapsed_1wvfe_54 {
272
266
  transform: rotate(-45deg);
273
267
  }
274
- ._card_1ywyn_1 ._content_1ywyn_64 {
268
+ ._card_1wvfe_1 ._titleInteractive_1wvfe_35:hover ._chevronExpanded_1wvfe_50,
269
+ ._card_1wvfe_1 ._titleInteractive_1wvfe_35:focus-visible ._chevronExpanded_1wvfe_50 {
270
+ transform: rotate(30deg);
271
+ }
272
+ ._card_1wvfe_1 ._titleInteractive_1wvfe_35:hover ._chevronCollapsed_1wvfe_54,
273
+ ._card_1wvfe_1 ._titleInteractive_1wvfe_35:focus-visible ._chevronCollapsed_1wvfe_54 {
274
+ transform: rotate(-30deg);
275
+ }
276
+ ._card_1wvfe_1 ._content_1wvfe_68 {
275
277
  display: grid;
276
278
  grid-template-rows: 1fr;
277
279
  transition:
278
280
  grid-template-rows 0.2s ease,
279
281
  opacity 0.2s ease;
280
282
  }
281
- ._card_1ywyn_1 ._contentInner_1ywyn_72 {
283
+ ._card_1wvfe_1 ._contentInner_1wvfe_76 {
282
284
  overflow: hidden;
283
285
  min-height: 0;
284
286
  display: flex;
285
287
  flex-direction: column;
286
288
  }
287
- ._card_1ywyn_1 ._contentCollapsed_1ywyn_79 {
289
+ ._card_1wvfe_1 ._contentCollapsed_1wvfe_83 {
288
290
  grid-template-rows: 0fr;
289
291
  opacity: 0;
290
292
  }
291
- ._card_1ywyn_1 ._body_1ywyn_84 {
293
+ ._card_1wvfe_1 ._body_1wvfe_88 {
292
294
  padding: 0.5rem 1rem;
293
295
  width: 100%;
294
296
  }
295
- ._card_1ywyn_1 ._footer_1ywyn_89 {
297
+ ._card_1wvfe_1 ._footer_1wvfe_93 {
296
298
  border-top: var(--border-thickness) solid var(--border-color);
297
299
  flex: 1;
298
300
  background-color: var(--card-bg);
299
301
  padding: 0.5rem 1rem;
300
302
  }
301
- ._large_1ywyn_96 ._body_1ywyn_84,
302
- ._large_1ywyn_96 ._title_1ywyn_18 {
303
+ ._large_1wvfe_100 ._body_1wvfe_88,
304
+ ._large_1wvfe_100 ._title_1wvfe_18 {
303
305
  font-size: 1.25rem;
304
306
  padding: 0.75rem 1.25rem;
305
307
  }
306
- ._small_1ywyn_102 ._body_1ywyn_84,
307
- ._small_1ywyn_102 ._title_1ywyn_18 {
308
+ ._small_1wvfe_106 ._body_1wvfe_88,
309
+ ._small_1wvfe_106 ._title_1wvfe_18 {
308
310
  font-size: 0.75rem;
309
311
  padding: 0.25rem 0.5rem;
310
312
  }
311
313
  /* Variants */
312
- ._primary_1ywyn_110 {
314
+ ._primary_1wvfe_114 {
313
315
  --card-bg: var(--primary-color-100);
314
316
  --border-color: var(--primary-color-300);
315
317
  --border-accent-color: var(--primary-color-600);
316
318
  --card-color: var(--primary-color-800);
317
319
  }
318
- ._success_1ywyn_117 {
320
+ ._success_1wvfe_121 {
319
321
  --card-bg: var(--success-color-100);
320
322
  --border-color: var(--success-color-300);
321
323
  --border-accent-color: var(--success-color-600);
322
324
  --card-color: var(--success-color-800);
323
325
  }
324
- ._warning_1ywyn_124 {
326
+ ._warning_1wvfe_128 {
325
327
  --card-bg: var(--warning-color-100);
326
328
  --border-color: var(--warning-color-300);
327
329
  --border-accent-color: var(--warning-color-600);
328
330
  --card-color: var(--warning-color-800);
329
331
  }
330
- ._danger_1ywyn_131 {
332
+ ._danger_1wvfe_135 {
331
333
  --card-bg: var(--danger-color-100);
332
334
  --border-color: var(--danger-color-300);
333
335
  --border-accent-color: var(--danger-color-600);
334
336
  --card-color: var(--danger-color-800);
335
337
  }
336
- ._info_1ywyn_138 {
338
+ ._info_1wvfe_142 {
337
339
  --card-bg: var(--info-color-100);
338
340
  --border-color: var(--info-color-300);
339
341
  --border-accent-color: var(--info-color-600);
340
342
  --card-color: var(--info-color-800);
341
343
  }
342
- ._secondary_1ywyn_145 {
344
+ ._secondary_1wvfe_149 {
343
345
  --card-bg: var(--secondary-color-100);
344
346
  --border-color: var(--secondary-color-300);
345
347
  --border-accent-color: var(--secondary-color-600);
@@ -1642,7 +1644,7 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
1642
1644
  --button-color: var(--body-color);
1643
1645
  }
1644
1646
  /* modal.module.css */
1645
- @keyframes _overlayIn_1fxeg_1 {
1647
+ @keyframes _overlayIn_10x08_1 {
1646
1648
  from {
1647
1649
  opacity: 0;
1648
1650
  }
@@ -1650,7 +1652,7 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
1650
1652
  opacity: 1;
1651
1653
  }
1652
1654
  }
1653
- @keyframes _overlayOut_1fxeg_1 {
1655
+ @keyframes _overlayOut_10x08_1 {
1654
1656
  from {
1655
1657
  opacity: 1;
1656
1658
  }
@@ -1658,7 +1660,7 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
1658
1660
  opacity: 0;
1659
1661
  }
1660
1662
  }
1661
- @keyframes _panelIn_1fxeg_1 {
1663
+ @keyframes _panelIn_10x08_1 {
1662
1664
  from {
1663
1665
  opacity: 0;
1664
1666
  transform: translateX(400px);
@@ -1668,7 +1670,7 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
1668
1670
  transform: translateX(0);
1669
1671
  }
1670
1672
  }
1671
- @keyframes _panelOut_1fxeg_1 {
1673
+ @keyframes _panelOut_10x08_1 {
1672
1674
  from {
1673
1675
  opacity: 1;
1674
1676
  transform: translateX(0);
@@ -1678,23 +1680,23 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
1678
1680
  transform: translateX(100%);
1679
1681
  }
1680
1682
  }
1681
- ._overlay_1fxeg_43 {
1683
+ ._overlay_10x08_43 {
1682
1684
  position: fixed;
1683
1685
  inset: 0;
1684
1686
  z-index: 98;
1685
1687
  }
1686
- ._overlayBackdrop_1fxeg_49 {
1688
+ ._overlayBackdrop_10x08_49 {
1687
1689
  position: absolute;
1688
1690
  inset: 0;
1689
1691
  background: color-mix(in srgb, var(--body-bg) 50%, transparent);
1690
1692
  }
1691
- ._overlay_1fxeg_43[data-state="open"] {
1692
- animation: _overlayIn_1fxeg_1 160ms ease-out;
1693
+ ._overlay_10x08_43[data-state="open"] {
1694
+ animation: _overlayIn_10x08_1 160ms ease-out;
1693
1695
  }
1694
- ._overlay_1fxeg_43[data-state="closed"] {
1695
- animation: _overlayOut_1fxeg_1 120ms ease-in;
1696
+ ._overlay_10x08_43[data-state="closed"] {
1697
+ animation: _overlayOut_10x08_1 120ms ease-in;
1696
1698
  }
1697
- ._content_1fxeg_63 {
1699
+ ._content_10x08_63 {
1698
1700
  position: fixed;
1699
1701
  top: 10px;
1700
1702
  right: 10px;
@@ -1707,29 +1709,34 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
1707
1709
  display: flex;
1708
1710
  flex-direction: column;
1709
1711
  }
1710
- ._content_1fxeg_63[data-state="open"] {
1711
- animation: _panelIn_1fxeg_1 180ms cubic-bezier(0.16, 1, 0.3, 1);
1712
+ ._content_10x08_63[data-state="open"] {
1713
+ animation: _panelIn_10x08_1 180ms cubic-bezier(0.16, 1, 0.3, 1);
1712
1714
  }
1713
- ._content_1fxeg_63[data-state="closed"] {
1714
- animation: _panelOut_1fxeg_1 140ms ease-in;
1715
+ ._content_10x08_63[data-state="closed"] {
1716
+ animation: _panelOut_10x08_1 140ms ease-in;
1715
1717
  }
1716
- body.jcui-modal-mobile ._content_1fxeg_63 {
1718
+ body.jcui-modal-mobile ._content_10x08_63 {
1717
1719
  top: 0;
1718
1720
  right: 0;
1719
1721
  bottom: 0;
1720
1722
  left: 0;
1721
1723
  min-width: 0;
1722
1724
  }
1723
- ._title_1fxeg_96 {
1725
+ ._title_10x08_96 {
1724
1726
  margin: 0;
1725
1727
  }
1726
- ._body_1fxeg_100 {
1728
+ ._body_10x08_100 {
1727
1729
  flex: 1;
1728
1730
  min-height: 0;
1729
1731
  overflow-y: auto;
1730
1732
  padding-top: 1rem;
1731
1733
  }
1732
- ._footer_1fxeg_107 {
1734
+ ._body_10x08_100 > hr {
1735
+ margin: 1rem 0;
1736
+ transform: translateX(-16px);
1737
+ width: calc(100% + 32px);
1738
+ }
1739
+ ._footer_10x08_113 {
1733
1740
  margin: -12px;
1734
1741
  margin-top: 0px;
1735
1742
  padding: 12px;
@@ -2665,35 +2672,35 @@ function requireClassnames() {
2665
2672
  }
2666
2673
  var classnamesExports = requireClassnames();
2667
2674
  const classNames = /* @__PURE__ */ getDefaultExportFromCjs(classnamesExports);
2668
- const card = "_card_1ywyn_1";
2669
- const pageBackground$3 = "_pageBackground_1ywyn_11";
2670
- const title$1 = "_title_1ywyn_18";
2671
- const titleCollapsed = "_titleCollapsed_1ywyn_25";
2672
- const titleContent = "_titleContent_1ywyn_29";
2673
- const chevronButton = "_chevronButton_1ywyn_35";
2674
- const chevron = "_chevron_1ywyn_35";
2675
- const chevronExpanded = "_chevronExpanded_1ywyn_56";
2676
- const chevronCollapsed = "_chevronCollapsed_1ywyn_60";
2677
- const content$4 = "_content_1ywyn_64";
2678
- const contentInner = "_contentInner_1ywyn_72";
2679
- const contentCollapsed = "_contentCollapsed_1ywyn_79";
2680
- const body$1 = "_body_1ywyn_84";
2681
- const footer$1 = "_footer_1ywyn_89";
2682
- const large$7 = "_large_1ywyn_96";
2683
- const small$7 = "_small_1ywyn_102";
2684
- const primary$9 = "_primary_1ywyn_110";
2685
- const success$9 = "_success_1ywyn_117";
2686
- const warning$9 = "_warning_1ywyn_124";
2687
- const danger$9 = "_danger_1ywyn_131";
2688
- const info$9 = "_info_1ywyn_138";
2689
- const secondary$9 = "_secondary_1ywyn_145";
2675
+ const card = "_card_1wvfe_1";
2676
+ const pageBackground$3 = "_pageBackground_1wvfe_11";
2677
+ const title$1 = "_title_1wvfe_18";
2678
+ const titleCollapsed = "_titleCollapsed_1wvfe_25";
2679
+ const titleContent = "_titleContent_1wvfe_29";
2680
+ const titleInteractive = "_titleInteractive_1wvfe_35";
2681
+ const chevron = "_chevron_1wvfe_39";
2682
+ const chevronExpanded = "_chevronExpanded_1wvfe_50";
2683
+ const chevronCollapsed = "_chevronCollapsed_1wvfe_54";
2684
+ const content$4 = "_content_1wvfe_68";
2685
+ const contentInner = "_contentInner_1wvfe_76";
2686
+ const contentCollapsed = "_contentCollapsed_1wvfe_83";
2687
+ const body$1 = "_body_1wvfe_88";
2688
+ const footer$1 = "_footer_1wvfe_93";
2689
+ const large$7 = "_large_1wvfe_100";
2690
+ const small$7 = "_small_1wvfe_106";
2691
+ const primary$9 = "_primary_1wvfe_114";
2692
+ const success$9 = "_success_1wvfe_121";
2693
+ const warning$9 = "_warning_1wvfe_128";
2694
+ const danger$9 = "_danger_1wvfe_135";
2695
+ const info$9 = "_info_1wvfe_142";
2696
+ const secondary$9 = "_secondary_1wvfe_149";
2690
2697
  const styles$b = {
2691
2698
  card,
2692
2699
  pageBackground: pageBackground$3,
2693
2700
  title: title$1,
2694
2701
  titleCollapsed,
2695
2702
  titleContent,
2696
- chevronButton,
2703
+ titleInteractive,
2697
2704
  chevron,
2698
2705
  chevronExpanded,
2699
2706
  chevronCollapsed,
@@ -2732,6 +2739,15 @@ function Card({
2732
2739
  }
2733
2740
  onCollapseChange?.(!isCollapsed2);
2734
2741
  };
2742
+ const handleKeyDown = (event) => {
2743
+ if (!isCollapsible) {
2744
+ return;
2745
+ }
2746
+ if (event.key === "Enter" || event.key === " ") {
2747
+ event.preventDefault();
2748
+ handleCollapseToggle();
2749
+ }
2750
+ };
2735
2751
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
2736
2752
  "div",
2737
2753
  {
@@ -2751,27 +2767,24 @@ function Card({
2751
2767
  className: classNames(
2752
2768
  styles$b.title,
2753
2769
  hatchStyles.hatch,
2754
- isCollapsed2 && styles$b.titleCollapsed
2770
+ isCollapsed2 && styles$b.titleCollapsed,
2771
+ isCollapsible && styles$b.titleInteractive
2755
2772
  ),
2773
+ onClick: isCollapsible ? handleCollapseToggle : void 0,
2774
+ onKeyDown: isCollapsible ? handleKeyDown : void 0,
2775
+ role: isCollapsible ? "button" : void 0,
2776
+ tabIndex: isCollapsible ? 0 : void 0,
2777
+ "aria-expanded": isCollapsible ? !isCollapsed2 : void 0,
2778
+ "aria-label": isCollapsible ? isCollapsed2 ? "Expand card" : "Collapse card" : void 0,
2756
2779
  children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: styles$b.titleContent, children: [
2757
2780
  title2,
2758
2781
  isCollapsible && /* @__PURE__ */ jsxRuntimeExports.jsx(
2759
- "button",
2782
+ "span",
2760
2783
  {
2761
- type: "button",
2762
- className: styles$b.chevronButton,
2763
- onClick: handleCollapseToggle,
2764
- "aria-label": isCollapsed2 ? "Expand card" : "Collapse card",
2765
- "aria-expanded": !isCollapsed2,
2766
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(
2767
- "span",
2768
- {
2769
- "aria-hidden": "true",
2770
- className: classNames(
2771
- styles$b.chevron,
2772
- isCollapsed2 ? styles$b.chevronCollapsed : styles$b.chevronExpanded
2773
- )
2774
- }
2784
+ "aria-hidden": "true",
2785
+ className: classNames(
2786
+ styles$b.chevron,
2787
+ isCollapsed2 ? styles$b.chevronCollapsed : styles$b.chevronExpanded
2775
2788
  )
2776
2789
  }
2777
2790
  )
@@ -27939,12 +27952,12 @@ var Overlay = DialogOverlay;
27939
27952
  var Content = DialogContent;
27940
27953
  var Title = DialogTitle;
27941
27954
  var Close = DialogClose;
27942
- const overlay = "_overlay_1fxeg_43";
27943
- const overlayBackdrop = "_overlayBackdrop_1fxeg_49";
27944
- const content$1 = "_content_1fxeg_63";
27945
- const title = "_title_1fxeg_96";
27946
- const body = "_body_1fxeg_100";
27947
- const footer = "_footer_1fxeg_107";
27955
+ const overlay = "_overlay_10x08_43";
27956
+ const overlayBackdrop = "_overlayBackdrop_10x08_49";
27957
+ const content$1 = "_content_10x08_63";
27958
+ const title = "_title_10x08_96";
27959
+ const body = "_body_10x08_100";
27960
+ const footer = "_footer_10x08_113";
27948
27961
  const styles$1 = {
27949
27962
  overlay,
27950
27963
  overlayBackdrop,
package/dist/jcui.es.js CHANGED
@@ -217,7 +217,7 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
217
217
  transform: rotate(360deg);
218
218
  }
219
219
  }
220
- ._card_1ywyn_1 {
220
+ ._card_1wvfe_1 {
221
221
  border-width: var(--border-thickness);
222
222
  border-style: solid;
223
223
  font-size: 1rem;
@@ -226,120 +226,122 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
226
226
  display: flex;
227
227
  flex-direction: column;
228
228
  }
229
- ._pageBackground_1ywyn_11 {
229
+ ._pageBackground_1wvfe_11 {
230
230
  --card-bg: var(--body-bg);
231
231
  --button-bg: var(--body-bg);
232
232
  --card-color: var(--body-color);
233
233
  background-color: var(--body-bg);
234
234
  }
235
- ._card_1ywyn_1 ._title_1ywyn_18 {
235
+ ._card_1wvfe_1 ._title_1wvfe_18 {
236
236
  font-size: 1.25rem;
237
237
  padding: 0.5rem 1rem;
238
238
  border-bottom: var(--border-thickness) solid var(--border-color);
239
239
  background-color: var(--card-bg);
240
240
  }
241
- ._card_1ywyn_1 ._titleCollapsed_1ywyn_25 {
241
+ ._card_1wvfe_1 ._titleCollapsed_1wvfe_25 {
242
242
  border-bottom: 0;
243
243
  }
244
- ._card_1ywyn_1 ._titleContent_1ywyn_29 {
244
+ ._card_1wvfe_1 ._titleContent_1wvfe_29 {
245
245
  display: flex;
246
246
  align-items: center;
247
247
  gap: 0.5rem;
248
248
  }
249
- ._card_1ywyn_1 ._chevronButton_1ywyn_35 {
250
- margin-left: auto;
251
- border: 0;
252
- background: transparent;
253
- color: inherit;
254
- padding: 0;
255
- display: flex;
256
- align-items: center;
249
+ ._card_1wvfe_1 ._titleInteractive_1wvfe_35 {
257
250
  cursor: pointer;
258
251
  }
259
- ._card_1ywyn_1 ._chevron_1ywyn_35 {
252
+ ._card_1wvfe_1 ._chevron_1wvfe_39 {
253
+ margin-left: auto;
260
254
  width: 0.5rem;
261
255
  height: 0.5rem;
262
256
  border-right: 2px solid currentColor;
263
257
  border-bottom: 2px solid currentColor;
264
258
  transition: transform 0.2s ease;
265
259
  flex-shrink: 0;
266
- cursor: pointer;
260
+ cursor: inherit;
267
261
  }
268
- ._card_1ywyn_1 ._chevronExpanded_1ywyn_56 {
262
+ ._card_1wvfe_1 ._chevronExpanded_1wvfe_50 {
269
263
  transform: rotate(45deg);
270
264
  }
271
- ._card_1ywyn_1 ._chevronCollapsed_1ywyn_60 {
265
+ ._card_1wvfe_1 ._chevronCollapsed_1wvfe_54 {
272
266
  transform: rotate(-45deg);
273
267
  }
274
- ._card_1ywyn_1 ._content_1ywyn_64 {
268
+ ._card_1wvfe_1 ._titleInteractive_1wvfe_35:hover ._chevronExpanded_1wvfe_50,
269
+ ._card_1wvfe_1 ._titleInteractive_1wvfe_35:focus-visible ._chevronExpanded_1wvfe_50 {
270
+ transform: rotate(30deg);
271
+ }
272
+ ._card_1wvfe_1 ._titleInteractive_1wvfe_35:hover ._chevronCollapsed_1wvfe_54,
273
+ ._card_1wvfe_1 ._titleInteractive_1wvfe_35:focus-visible ._chevronCollapsed_1wvfe_54 {
274
+ transform: rotate(-30deg);
275
+ }
276
+ ._card_1wvfe_1 ._content_1wvfe_68 {
275
277
  display: grid;
276
278
  grid-template-rows: 1fr;
277
279
  transition:
278
280
  grid-template-rows 0.2s ease,
279
281
  opacity 0.2s ease;
280
282
  }
281
- ._card_1ywyn_1 ._contentInner_1ywyn_72 {
283
+ ._card_1wvfe_1 ._contentInner_1wvfe_76 {
282
284
  overflow: hidden;
283
285
  min-height: 0;
284
286
  display: flex;
285
287
  flex-direction: column;
286
288
  }
287
- ._card_1ywyn_1 ._contentCollapsed_1ywyn_79 {
289
+ ._card_1wvfe_1 ._contentCollapsed_1wvfe_83 {
288
290
  grid-template-rows: 0fr;
289
291
  opacity: 0;
290
292
  }
291
- ._card_1ywyn_1 ._body_1ywyn_84 {
293
+ ._card_1wvfe_1 ._body_1wvfe_88 {
292
294
  padding: 0.5rem 1rem;
293
295
  width: 100%;
294
296
  }
295
- ._card_1ywyn_1 ._footer_1ywyn_89 {
297
+ ._card_1wvfe_1 ._footer_1wvfe_93 {
296
298
  border-top: var(--border-thickness) solid var(--border-color);
297
299
  flex: 1;
298
300
  background-color: var(--card-bg);
299
301
  padding: 0.5rem 1rem;
300
302
  }
301
- ._large_1ywyn_96 ._body_1ywyn_84,
302
- ._large_1ywyn_96 ._title_1ywyn_18 {
303
+ ._large_1wvfe_100 ._body_1wvfe_88,
304
+ ._large_1wvfe_100 ._title_1wvfe_18 {
303
305
  font-size: 1.25rem;
304
306
  padding: 0.75rem 1.25rem;
305
307
  }
306
- ._small_1ywyn_102 ._body_1ywyn_84,
307
- ._small_1ywyn_102 ._title_1ywyn_18 {
308
+ ._small_1wvfe_106 ._body_1wvfe_88,
309
+ ._small_1wvfe_106 ._title_1wvfe_18 {
308
310
  font-size: 0.75rem;
309
311
  padding: 0.25rem 0.5rem;
310
312
  }
311
313
  /* Variants */
312
- ._primary_1ywyn_110 {
314
+ ._primary_1wvfe_114 {
313
315
  --card-bg: var(--primary-color-100);
314
316
  --border-color: var(--primary-color-300);
315
317
  --border-accent-color: var(--primary-color-600);
316
318
  --card-color: var(--primary-color-800);
317
319
  }
318
- ._success_1ywyn_117 {
320
+ ._success_1wvfe_121 {
319
321
  --card-bg: var(--success-color-100);
320
322
  --border-color: var(--success-color-300);
321
323
  --border-accent-color: var(--success-color-600);
322
324
  --card-color: var(--success-color-800);
323
325
  }
324
- ._warning_1ywyn_124 {
326
+ ._warning_1wvfe_128 {
325
327
  --card-bg: var(--warning-color-100);
326
328
  --border-color: var(--warning-color-300);
327
329
  --border-accent-color: var(--warning-color-600);
328
330
  --card-color: var(--warning-color-800);
329
331
  }
330
- ._danger_1ywyn_131 {
332
+ ._danger_1wvfe_135 {
331
333
  --card-bg: var(--danger-color-100);
332
334
  --border-color: var(--danger-color-300);
333
335
  --border-accent-color: var(--danger-color-600);
334
336
  --card-color: var(--danger-color-800);
335
337
  }
336
- ._info_1ywyn_138 {
338
+ ._info_1wvfe_142 {
337
339
  --card-bg: var(--info-color-100);
338
340
  --border-color: var(--info-color-300);
339
341
  --border-accent-color: var(--info-color-600);
340
342
  --card-color: var(--info-color-800);
341
343
  }
342
- ._secondary_1ywyn_145 {
344
+ ._secondary_1wvfe_149 {
343
345
  --card-bg: var(--secondary-color-100);
344
346
  --border-color: var(--secondary-color-300);
345
347
  --border-accent-color: var(--secondary-color-600);
@@ -1642,7 +1644,7 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
1642
1644
  --button-color: var(--body-color);
1643
1645
  }
1644
1646
  /* modal.module.css */
1645
- @keyframes _overlayIn_1fxeg_1 {
1647
+ @keyframes _overlayIn_10x08_1 {
1646
1648
  from {
1647
1649
  opacity: 0;
1648
1650
  }
@@ -1650,7 +1652,7 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
1650
1652
  opacity: 1;
1651
1653
  }
1652
1654
  }
1653
- @keyframes _overlayOut_1fxeg_1 {
1655
+ @keyframes _overlayOut_10x08_1 {
1654
1656
  from {
1655
1657
  opacity: 1;
1656
1658
  }
@@ -1658,7 +1660,7 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
1658
1660
  opacity: 0;
1659
1661
  }
1660
1662
  }
1661
- @keyframes _panelIn_1fxeg_1 {
1663
+ @keyframes _panelIn_10x08_1 {
1662
1664
  from {
1663
1665
  opacity: 0;
1664
1666
  transform: translateX(400px);
@@ -1668,7 +1670,7 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
1668
1670
  transform: translateX(0);
1669
1671
  }
1670
1672
  }
1671
- @keyframes _panelOut_1fxeg_1 {
1673
+ @keyframes _panelOut_10x08_1 {
1672
1674
  from {
1673
1675
  opacity: 1;
1674
1676
  transform: translateX(0);
@@ -1678,23 +1680,23 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
1678
1680
  transform: translateX(100%);
1679
1681
  }
1680
1682
  }
1681
- ._overlay_1fxeg_43 {
1683
+ ._overlay_10x08_43 {
1682
1684
  position: fixed;
1683
1685
  inset: 0;
1684
1686
  z-index: 98;
1685
1687
  }
1686
- ._overlayBackdrop_1fxeg_49 {
1688
+ ._overlayBackdrop_10x08_49 {
1687
1689
  position: absolute;
1688
1690
  inset: 0;
1689
1691
  background: color-mix(in srgb, var(--body-bg) 50%, transparent);
1690
1692
  }
1691
- ._overlay_1fxeg_43[data-state="open"] {
1692
- animation: _overlayIn_1fxeg_1 160ms ease-out;
1693
+ ._overlay_10x08_43[data-state="open"] {
1694
+ animation: _overlayIn_10x08_1 160ms ease-out;
1693
1695
  }
1694
- ._overlay_1fxeg_43[data-state="closed"] {
1695
- animation: _overlayOut_1fxeg_1 120ms ease-in;
1696
+ ._overlay_10x08_43[data-state="closed"] {
1697
+ animation: _overlayOut_10x08_1 120ms ease-in;
1696
1698
  }
1697
- ._content_1fxeg_63 {
1699
+ ._content_10x08_63 {
1698
1700
  position: fixed;
1699
1701
  top: 10px;
1700
1702
  right: 10px;
@@ -1707,29 +1709,34 @@ div.jcui_chamfer:not(.jcui_disabled):focus-within {
1707
1709
  display: flex;
1708
1710
  flex-direction: column;
1709
1711
  }
1710
- ._content_1fxeg_63[data-state="open"] {
1711
- animation: _panelIn_1fxeg_1 180ms cubic-bezier(0.16, 1, 0.3, 1);
1712
+ ._content_10x08_63[data-state="open"] {
1713
+ animation: _panelIn_10x08_1 180ms cubic-bezier(0.16, 1, 0.3, 1);
1712
1714
  }
1713
- ._content_1fxeg_63[data-state="closed"] {
1714
- animation: _panelOut_1fxeg_1 140ms ease-in;
1715
+ ._content_10x08_63[data-state="closed"] {
1716
+ animation: _panelOut_10x08_1 140ms ease-in;
1715
1717
  }
1716
- body.jcui-modal-mobile ._content_1fxeg_63 {
1718
+ body.jcui-modal-mobile ._content_10x08_63 {
1717
1719
  top: 0;
1718
1720
  right: 0;
1719
1721
  bottom: 0;
1720
1722
  left: 0;
1721
1723
  min-width: 0;
1722
1724
  }
1723
- ._title_1fxeg_96 {
1725
+ ._title_10x08_96 {
1724
1726
  margin: 0;
1725
1727
  }
1726
- ._body_1fxeg_100 {
1728
+ ._body_10x08_100 {
1727
1729
  flex: 1;
1728
1730
  min-height: 0;
1729
1731
  overflow-y: auto;
1730
1732
  padding-top: 1rem;
1731
1733
  }
1732
- ._footer_1fxeg_107 {
1734
+ ._body_10x08_100 > hr {
1735
+ margin: 1rem 0;
1736
+ transform: translateX(-16px);
1737
+ width: calc(100% + 32px);
1738
+ }
1739
+ ._footer_10x08_113 {
1733
1740
  margin: -12px;
1734
1741
  margin-top: 0px;
1735
1742
  padding: 12px;
@@ -2647,35 +2654,35 @@ function requireClassnames() {
2647
2654
  }
2648
2655
  var classnamesExports = requireClassnames();
2649
2656
  const classNames = /* @__PURE__ */ getDefaultExportFromCjs(classnamesExports);
2650
- const card = "_card_1ywyn_1";
2651
- const pageBackground$3 = "_pageBackground_1ywyn_11";
2652
- const title$1 = "_title_1ywyn_18";
2653
- const titleCollapsed = "_titleCollapsed_1ywyn_25";
2654
- const titleContent = "_titleContent_1ywyn_29";
2655
- const chevronButton = "_chevronButton_1ywyn_35";
2656
- const chevron = "_chevron_1ywyn_35";
2657
- const chevronExpanded = "_chevronExpanded_1ywyn_56";
2658
- const chevronCollapsed = "_chevronCollapsed_1ywyn_60";
2659
- const content$4 = "_content_1ywyn_64";
2660
- const contentInner = "_contentInner_1ywyn_72";
2661
- const contentCollapsed = "_contentCollapsed_1ywyn_79";
2662
- const body$1 = "_body_1ywyn_84";
2663
- const footer$1 = "_footer_1ywyn_89";
2664
- const large$7 = "_large_1ywyn_96";
2665
- const small$7 = "_small_1ywyn_102";
2666
- const primary$9 = "_primary_1ywyn_110";
2667
- const success$9 = "_success_1ywyn_117";
2668
- const warning$9 = "_warning_1ywyn_124";
2669
- const danger$9 = "_danger_1ywyn_131";
2670
- const info$9 = "_info_1ywyn_138";
2671
- const secondary$9 = "_secondary_1ywyn_145";
2657
+ const card = "_card_1wvfe_1";
2658
+ const pageBackground$3 = "_pageBackground_1wvfe_11";
2659
+ const title$1 = "_title_1wvfe_18";
2660
+ const titleCollapsed = "_titleCollapsed_1wvfe_25";
2661
+ const titleContent = "_titleContent_1wvfe_29";
2662
+ const titleInteractive = "_titleInteractive_1wvfe_35";
2663
+ const chevron = "_chevron_1wvfe_39";
2664
+ const chevronExpanded = "_chevronExpanded_1wvfe_50";
2665
+ const chevronCollapsed = "_chevronCollapsed_1wvfe_54";
2666
+ const content$4 = "_content_1wvfe_68";
2667
+ const contentInner = "_contentInner_1wvfe_76";
2668
+ const contentCollapsed = "_contentCollapsed_1wvfe_83";
2669
+ const body$1 = "_body_1wvfe_88";
2670
+ const footer$1 = "_footer_1wvfe_93";
2671
+ const large$7 = "_large_1wvfe_100";
2672
+ const small$7 = "_small_1wvfe_106";
2673
+ const primary$9 = "_primary_1wvfe_114";
2674
+ const success$9 = "_success_1wvfe_121";
2675
+ const warning$9 = "_warning_1wvfe_128";
2676
+ const danger$9 = "_danger_1wvfe_135";
2677
+ const info$9 = "_info_1wvfe_142";
2678
+ const secondary$9 = "_secondary_1wvfe_149";
2672
2679
  const styles$b = {
2673
2680
  card,
2674
2681
  pageBackground: pageBackground$3,
2675
2682
  title: title$1,
2676
2683
  titleCollapsed,
2677
2684
  titleContent,
2678
- chevronButton,
2685
+ titleInteractive,
2679
2686
  chevron,
2680
2687
  chevronExpanded,
2681
2688
  chevronCollapsed,
@@ -2714,6 +2721,15 @@ function Card({
2714
2721
  }
2715
2722
  onCollapseChange?.(!isCollapsed2);
2716
2723
  };
2724
+ const handleKeyDown = (event) => {
2725
+ if (!isCollapsible) {
2726
+ return;
2727
+ }
2728
+ if (event.key === "Enter" || event.key === " ") {
2729
+ event.preventDefault();
2730
+ handleCollapseToggle();
2731
+ }
2732
+ };
2717
2733
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
2718
2734
  "div",
2719
2735
  {
@@ -2733,27 +2749,24 @@ function Card({
2733
2749
  className: classNames(
2734
2750
  styles$b.title,
2735
2751
  hatchStyles.hatch,
2736
- isCollapsed2 && styles$b.titleCollapsed
2752
+ isCollapsed2 && styles$b.titleCollapsed,
2753
+ isCollapsible && styles$b.titleInteractive
2737
2754
  ),
2755
+ onClick: isCollapsible ? handleCollapseToggle : void 0,
2756
+ onKeyDown: isCollapsible ? handleKeyDown : void 0,
2757
+ role: isCollapsible ? "button" : void 0,
2758
+ tabIndex: isCollapsible ? 0 : void 0,
2759
+ "aria-expanded": isCollapsible ? !isCollapsed2 : void 0,
2760
+ "aria-label": isCollapsible ? isCollapsed2 ? "Expand card" : "Collapse card" : void 0,
2738
2761
  children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: styles$b.titleContent, children: [
2739
2762
  title2,
2740
2763
  isCollapsible && /* @__PURE__ */ jsxRuntimeExports.jsx(
2741
- "button",
2764
+ "span",
2742
2765
  {
2743
- type: "button",
2744
- className: styles$b.chevronButton,
2745
- onClick: handleCollapseToggle,
2746
- "aria-label": isCollapsed2 ? "Expand card" : "Collapse card",
2747
- "aria-expanded": !isCollapsed2,
2748
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(
2749
- "span",
2750
- {
2751
- "aria-hidden": "true",
2752
- className: classNames(
2753
- styles$b.chevron,
2754
- isCollapsed2 ? styles$b.chevronCollapsed : styles$b.chevronExpanded
2755
- )
2756
- }
2766
+ "aria-hidden": "true",
2767
+ className: classNames(
2768
+ styles$b.chevron,
2769
+ isCollapsed2 ? styles$b.chevronCollapsed : styles$b.chevronExpanded
2757
2770
  )
2758
2771
  }
2759
2772
  )
@@ -27921,12 +27934,12 @@ var Overlay = DialogOverlay;
27921
27934
  var Content = DialogContent;
27922
27935
  var Title = DialogTitle;
27923
27936
  var Close = DialogClose;
27924
- const overlay = "_overlay_1fxeg_43";
27925
- const overlayBackdrop = "_overlayBackdrop_1fxeg_49";
27926
- const content$1 = "_content_1fxeg_63";
27927
- const title = "_title_1fxeg_96";
27928
- const body = "_body_1fxeg_100";
27929
- const footer = "_footer_1fxeg_107";
27937
+ const overlay = "_overlay_10x08_43";
27938
+ const overlayBackdrop = "_overlayBackdrop_10x08_49";
27939
+ const content$1 = "_content_10x08_63";
27940
+ const title = "_title_10x08_96";
27941
+ const body = "_body_10x08_100";
27942
+ const footer = "_footer_10x08_113";
27930
27943
  const styles$1 = {
27931
27944
  overlay,
27932
27945
  overlayBackdrop,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jackcrane/ui",
3
- "version": "0.1.21",
3
+ "version": "0.1.23",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "main": "dist/jcui.cjs.js",