@tcn/ui 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/dist/Color-ASIRERSW-B4GaVKuQ.js +990 -0
  2. package/dist/Color-ASIRERSW-B4GaVKuQ.js.map +1 -0
  3. package/dist/WithTooltip-IO6J4KBT-B1oq93K5.js +1485 -0
  4. package/dist/WithTooltip-IO6J4KBT-B1oq93K5.js.map +1 -0
  5. package/dist/actions/__docs__/components/gallery.d.ts +8 -0
  6. package/dist/actions/__docs__/components/gallery.d.ts.map +1 -0
  7. package/dist/actions/__docs__/components/gallery.js +20 -0
  8. package/dist/actions/__docs__/components/gallery.js.map +1 -0
  9. package/dist/actions/__docs__/components/showcase.d.ts +27 -0
  10. package/dist/actions/__docs__/components/showcase.d.ts.map +1 -0
  11. package/dist/actions/__docs__/components/showcase.js +15 -0
  12. package/dist/actions/__docs__/components/showcase.js.map +1 -0
  13. package/dist/actions/button/base_button/base_button.d.ts +2 -0
  14. package/dist/actions/button/base_button/base_button.d.ts.map +1 -1
  15. package/dist/actions/button/base_button/base_button.js +18 -16
  16. package/dist/actions/button/base_button/base_button.js.map +1 -1
  17. package/dist/actions/button/button/button.js +6 -6
  18. package/dist/actions/button/button_group/button_group.js +1 -1
  19. package/dist/actions/button/select_group/select_group.js +13 -13
  20. package/dist/actions/button/select_group/single_select_group.js +6 -6
  21. package/dist/actions/button/slim_button/slim_button.js +2 -2
  22. package/dist/actions/types.d.ts +2 -0
  23. package/dist/actions/types.d.ts.map +1 -0
  24. package/dist/actions/types.js +2 -0
  25. package/dist/actions/types.js.map +1 -0
  26. package/dist/feedback/loading/loading.js +12 -12
  27. package/dist/feedback/loading/loading.js.map +1 -1
  28. package/dist/feedback/progress/progress_bar.js +1 -1
  29. package/dist/form/field/common/field_control/field_control.js +8 -8
  30. package/dist/form/field/common/status_input/status_input.js +6 -6
  31. package/dist/form/field/field.js +5 -5
  32. package/dist/form/field/h_field/h_field.js +11 -11
  33. package/dist/form/field/v_field/v_field.js +10 -10
  34. package/dist/form/field_set/field_set.js +3 -3
  35. package/dist/formatter-QJ4M4OGQ-DaIl2Wi_.js +6 -0
  36. package/dist/formatter-QJ4M4OGQ-DaIl2Wi_.js.map +1 -0
  37. package/dist/gallery.css +1 -0
  38. package/dist/inputs/checkbox/checkbox.js +11 -11
  39. package/dist/inputs/color_input/color_picker.js +5 -5
  40. package/dist/inputs/combo_box/combo_box.js +16 -16
  41. package/dist/inputs/date_picker/date_picker.js +18 -18
  42. package/dist/inputs/date_picker/date_picker_body.js +2 -2
  43. package/dist/inputs/date_picker/date_picker_input.js +18 -18
  44. package/dist/inputs/input/input.js +5 -5
  45. package/dist/inputs/mask_input/key_capture_input.js +7 -7
  46. package/dist/inputs/mask_input/mask_input.js +4 -4
  47. package/dist/inputs/multi_combo_box/multi_combo_box.js +17 -17
  48. package/dist/inputs/multiselect/multiselect.js +13 -13
  49. package/dist/inputs/multiselect/multiselect_row.js +8 -8
  50. package/dist/inputs/phone_number_input/phone_number_input.js +11 -11
  51. package/dist/inputs/radio/radio.js +10 -10
  52. package/dist/inputs/radio/radio_row.js +3 -3
  53. package/dist/inputs/select/select.js +14 -14
  54. package/dist/inputs/slider/slider.js +10 -10
  55. package/dist/inputs/switch/switch.js +4 -4
  56. package/dist/inputs/textarea/textarea.js +7 -7
  57. package/dist/inputs/unit_input/unit_input.js +4 -4
  58. package/dist/layouts/body/h_body.js +7 -7
  59. package/dist/layouts/body/v_body.js +6 -6
  60. package/dist/layouts/column/column.js +17 -17
  61. package/dist/layouts/footer/footer.js +7 -7
  62. package/dist/layouts/grid/grid.js +24 -24
  63. package/dist/layouts/header/header.js +2 -2
  64. package/dist/layouts/list/item.js +2 -2
  65. package/dist/layouts/list/list.js +7 -7
  66. package/dist/layouts/list/section_header.js +6 -6
  67. package/dist/layouts/scaffold/scaffold.js +16 -16
  68. package/dist/layouts/sidebar_end/sidebar_end.js +14 -14
  69. package/dist/layouts/sidebar_start/sidebar_start.js +10 -10
  70. package/dist/layouts/utility_bar/utility_bar.js +10 -10
  71. package/dist/overlay/frame/frame.js +4 -4
  72. package/dist/overlay/menu/menu.js +34 -34
  73. package/dist/overlay/portal/portal_platform_context.js +4 -4
  74. package/dist/showcase-WfP6kBEb.js +58401 -0
  75. package/dist/showcase-WfP6kBEb.js.map +1 -0
  76. package/dist/showcase.css +1 -0
  77. package/dist/stacks/box/box.js +23 -23
  78. package/dist/stacks/h_collapsible_box.js +2 -2
  79. package/dist/stacks/h_stack.js +41 -41
  80. package/dist/stacks/spacer.js +11 -11
  81. package/dist/stacks/story_components/circle.js +10 -10
  82. package/dist/stacks/story_components/picture_placeholder.js +9 -9
  83. package/dist/stacks/story_components/rect.js +7 -7
  84. package/dist/stacks/story_components/style_box.js +4 -4
  85. package/dist/stacks/utils/use_is_collapsed.js +6 -6
  86. package/dist/stacks/v_collapsible_box.js +2 -2
  87. package/dist/stacks/v_stack.js +42 -42
  88. package/dist/stacks/z_stack.js +39 -39
  89. package/dist/surfaces/alert/alert.js +4 -4
  90. package/dist/surfaces/card/card.js +4 -4
  91. package/dist/surfaces/confirm/confirm.js +9 -9
  92. package/dist/surfaces/drawers/drawer_start/drawer_start.js +2 -2
  93. package/dist/surfaces/drawers/drawer_top/drawer_top.js +2 -2
  94. package/dist/surfaces/modal/modal.js +5 -5
  95. package/dist/surfaces/page/h_page.js +7 -7
  96. package/dist/surfaces/page/v_page.js +5 -5
  97. package/dist/surfaces/panel/h_panel.js +14 -14
  98. package/dist/surfaces/panel/v_panel.js +9 -9
  99. package/dist/surfaces/pop_confirm/pop_confirm.js +6 -6
  100. package/dist/surfaces/popconfirm/pop_confirm.js +8 -8
  101. package/dist/surfaces/tooltip/tooltip.js +8 -8
  102. package/dist/surfaces/window/window.js +9 -9
  103. package/dist/syntaxhighlighter-IQDEPFLK-BX_eF8__.js +3777 -0
  104. package/dist/syntaxhighlighter-IQDEPFLK-BX_eF8__.js.map +1 -0
  105. package/dist/themes/themes/ergo/ergo_theme.js +33 -1
  106. package/dist/themes/themes/ergo/ergo_theme.js.map +1 -1
  107. package/dist/tokens/badge/badge.js +9 -9
  108. package/dist/tokens/bubble/bubble.js +8 -8
  109. package/dist/tokens/chip/chip.js +3 -3
  110. package/dist/utils/click_away_listener.js +10 -10
  111. package/dist/utils/click_away_listener.js.map +1 -1
  112. package/dist/utils/dnd/draggable/draggable.js +4 -4
  113. package/dist/utils/dnd/handle.js +8 -8
  114. package/dist/utils/focus_redirect.js +5 -5
  115. package/dist/utils/hooks/make_context_hook.js +4 -4
  116. package/dist/utils/hooks/use_media_query.js +2 -2
  117. package/dist/utils/hooks/use_media_query.js.map +1 -1
  118. package/package.json +1 -1
  119. package/src/actions/__docs__/actions.mdx +131 -0
  120. package/src/actions/__docs__/actions.stories.tsx +309 -0
  121. package/src/actions/__docs__/components/gallery.module.css +6 -0
  122. package/src/actions/__docs__/components/gallery.tsx +28 -0
  123. package/src/actions/__docs__/components/showcase.module.css +55 -0
  124. package/src/actions/__docs__/components/showcase.tsx +121 -0
  125. package/src/actions/button/base_button/base_button.tsx +5 -1
  126. package/src/actions/types.ts +6 -0
  127. package/src/themes/themes/ergo/ergo_theme.css +33 -1
@@ -205,6 +205,12 @@ legend {
205
205
  --on-action: 0, 0%, 100%;
206
206
  --material: 0, 0%, 100%;
207
207
  --on-material: 213, 35.6%, 34.7%;
208
+
209
+ --action-dangerous: 0, 90%, 50%;
210
+ --action-cautious: 53, 90%, 60%;
211
+ --action-neutral: var(--action);
212
+ --action-suggested: 202, 90%, 40%;
213
+ --action-encouraged: 120, 90%, 40%;
208
214
  }
209
215
 
210
216
  * {
@@ -221,7 +227,7 @@ legend {
221
227
  background 0.1s,
222
228
  color 0.1s;
223
229
 
224
- --act: hsl(var(--action));
230
+ --act: hsl(var(--interactive-color, var(--action)));
225
231
  --on-act: hsl(var(--on-action));
226
232
  /* Could use hsl here if we made three color variables for each of the hsl values */
227
233
  --act-down: color-mix(in srgb, var(--act), black 8%);
@@ -314,6 +320,32 @@ legend {
314
320
  }
315
321
 
316
322
  /* Button */
323
+
324
+ .tcn-base-button {
325
+ --action: var(var(--button-color), var(--action));
326
+ }
327
+
328
+ .tcn-base-button[data-severity="dangerous"] {
329
+ --action: var(--action-dangerous);
330
+ }
331
+
332
+ .tcn-base-button[data-severity="cautious"] {
333
+ --action: var(--action-cautious);
334
+ --on-action: var(--on-material);
335
+ }
336
+
337
+ /* .tcn-base-button[data-severity="neutral"] {
338
+ --action: var(--action-neutral);
339
+ } */
340
+
341
+ .tcn-base-button[data-severity="suggested"] {
342
+ --action: var(--action-suggested);
343
+ }
344
+
345
+ .tcn-base-button[data-severity="encouraged"] {
346
+ --action: var(--action-encouraged);
347
+ }
348
+
317
349
  .tcn-button {
318
350
  border-radius: 4px;
319
351
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ergo_theme.js","sources":["../../../../src/themes/themes/ergo/ergo_theme.css?raw","../../../../src/themes/themes/ergo/ergo_theme.ts"],"sourcesContent":["export default \"/* https://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 */\\nhtml,\\nbody,\\ndiv,\\nspan,\\napplet,\\nobject,\\niframe,\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\np,\\nblockquote,\\npre,\\na,\\nabbr,\\nacronym,\\naddress,\\nbig,\\ncite,\\ncode,\\ndel,\\ndfn,\\nem,\\nimg,\\nins,\\nkbd,\\nq,\\ns,\\nsamp,\\nsmall,\\nstrike,\\nstrong,\\nsub,\\nsup,\\ntt,\\nvar,\\nb,\\nu,\\ni,\\ncenter,\\ndl,\\ndt,\\ndd,\\nol,\\nul,\\nli,\\nfieldset,\\nform,\\nlabel,\\nlegend,\\ntable,\\ncaption,\\ntbody,\\ntfoot,\\nthead,\\ntr,\\nth,\\ntd,\\narticle,\\naside,\\ncanvas,\\ndetails,\\nembed,\\nfigure,\\nfigcaption,\\nfooter,\\nheader,\\nhgroup,\\nmenu,\\nnav,\\noutput,\\nruby,\\nsection,\\nsummary,\\ntime,\\nmark,\\naudio,\\nvideo {\\n margin: 0;\\n padding: 0;\\n border: 0;\\n font-size: 100%;\\n font: inherit;\\n vertical-align: baseline;\\n}\\n/* HTML5 display-role reset for older browsers */\\narticle,\\naside,\\ndetails,\\nfigcaption,\\nfigure,\\nfooter,\\nheader,\\nhgroup,\\nmenu,\\nnav,\\nsection {\\n display: block;\\n}\\nbody {\\n line-height: 1;\\n}\\nol,\\nul {\\n list-style: none;\\n}\\nblockquote,\\nq {\\n quotes: none;\\n}\\nblockquote:before,\\nblockquote:after,\\nq:before,\\nq:after {\\n content: \\\"\\\";\\n content: none;\\n}\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0;\\n}\\n\\nlegend {\\n all: unset;\\n display: block;\\n margin: 0;\\n padding: 0;\\n font: inherit;\\n color: inherit;\\n}\\n\\n/* ===== CSS VARIABLES ===== */\\n:root {\\n --scalar: 1;\\n --accent-color: #cd6b2c;\\n\\n /* Typography */\\n --font-color: #395578;\\n --font-family: \\\"Lato\\\", sans-serif;\\n --font-size: 12px;\\n\\n /* Spacing */\\n --gap-small: 4px;\\n --gap-medium: 8px;\\n --gap-large: 16px;\\n\\n --padding-small: 4px;\\n --padding-medium: 8px;\\n --padding-large: 16px;\\n\\n /* Status Colors */\\n --status-color-disabled: #7f7f7f;\\n --status-color-info: #008cff;\\n --status-color-warning: #ffff00;\\n --status-color-positive: #00ff00;\\n --status-color-error: #ff0000;\\n\\n --async-color-initial: #c0c0c0;\\n --async-color-pending: #008cff;\\n --async-color-success: #00ff00;\\n --async-color-failed: #ff0000;\\n\\n /* Shape */\\n --shape-radius-small: 2px;\\n --shape-radius-medium: 4px;\\n --shape-radius-large: 8px;\\n\\n /* Palette */\\n --primary-color-faint: #c0c0c0;\\n --primary-color: #008cff;\\n --primary-color-strong: #008cff;\\n\\n --secondary-color-faint: #c0c0c0;\\n --secondary-color: #008cff;\\n --secondary-color-strong: #008cff;\\n\\n --tertiary-color-faint: #c0c0c0;\\n --tertiary-color: #008cff;\\n --tertiary-color-strong: #008cff;\\n\\n --quaternary-color-faint: #c0c0c0;\\n --quaternary-color: #008cff;\\n --quaternary-color-strong: #008cff;\\n\\n --background-color-primary: #ffffff;\\n --background-color-secondary: #ffffff;\\n --background-color-tertiary: #ffffff;\\n --background-color-quaternary: #ffffff;\\n\\n --foreground-color-primary: #aaa;\\n --foreground-color-secondary: #222222;\\n --foreground-color-tertiary: #222222;\\n --foreground-color-quaternary: #222222;\\n\\n --material-disabled: #d3d3d3;\\n --material-secondary-dark: 197 29.1% 40.4%;\\n --material-tan: 33, 22%, 84%;\\n\\n /* Default Material */\\n --action: 23, 65%, 49%;\\n --on-action: 0, 0%, 100%;\\n --material: 0, 0%, 100%;\\n --on-material: 213, 35.6%, 34.7%;\\n}\\n\\n* {\\n position: relative;\\n box-sizing: border-box;\\n}\\n/* ===== Actions ===== */\\n\\n.tcn-interactive {\\n cursor: pointer;\\n user-select: none;\\n transition:\\n transform 0.1s,\\n background 0.1s,\\n color 0.1s;\\n\\n --act: hsl(var(--action));\\n --on-act: hsl(var(--on-action));\\n /* Could use hsl here if we made three color variables for each of the hsl values */\\n --act-down: color-mix(in srgb, var(--act), black 8%);\\n --act-raised: color-mix(in srgb, var(--act), white 8%);\\n --act-faint: hsla(var(--action), 0.2);\\n --on-mat: hsl(var(--on-material));\\n --on-mat-faint: hsla(var(--on-material), 0.2);\\n --mat: hsl(var(--material));\\n --mat-down: color-mix(in srgb, var(--mat), black 8%);\\n --mat-raised: color-mix(in srgb, var(--mat), white 8%);\\n}\\n\\n.tcn-interactive[data-is-disabled=\\\"true\\\"] {\\n pointer-events: none;\\n cursor: not-allowed;\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"primary\\\"] {\\n background: var(--act);\\n color: var(--on-act);\\n border: 1px solid var(--act);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"primary\\\"]:focus-visible {\\n outline: 2px dashed var(--act);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"primary\\\"][data-is-disabled=\\\"true\\\"] {\\n background: var(--material-disabled);\\n color: white;\\n border: 1px solid var(--material-disabled);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"primary\\\"]:hover {\\n background: var(--act-raised);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"primary\\\"]:active {\\n background: var(--act-down);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"secondary\\\"] {\\n background: transparent;\\n color: var(--on-mat);\\n border: 1px solid var(--on-mat);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"secondary\\\"]:focus-visible {\\n outline: 2px dashed var(--on-mat);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"secondary\\\"][data-is-disabled=\\\"true\\\"] {\\n color: var(--material-disabled);\\n border: 1px solid var(--material-disabled);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"secondary\\\"]:hover {\\n background: var(--on-mat-faint);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"secondary\\\"]:active {\\n background: var(--mat-down);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"tertiary\\\"] {\\n background: transparent;\\n color: var(--on-mat);\\n border: 1px solid transparent;\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"tertiary\\\"]:focus-visible {\\n outline: 2px dashed var(--on-mat);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"tertiary\\\"][data-is-disabled=\\\"true\\\"] {\\n color: var(--material-disabled);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"tertiary\\\"]:hover {\\n text-decoration: underline;\\n text-decoration-color: var(--on-mat);\\n text-decoration-thickness: 1px;\\n text-underline-offset: 4px;\\n color: var(--on-mat);\\n background: var(--on-mat-faint);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"tertiary\\\"]:active {\\n background: var(--mat-down);\\n}\\n\\n/* Button */\\n.tcn-button {\\n border-radius: 4px;\\n}\\n\\n.tcn-button[data-size=\\\"sm\\\"] {\\n padding: 0px 8px;\\n min-height: 22px;\\n}\\n\\n.tcn-button[data-size=\\\"md\\\"] {\\n padding: 0px 12px;\\n min-height: 26px;\\n}\\n\\n.tcn-button[data-size=\\\"lg\\\"] {\\n padding: 0px 16px;\\n min-height: 32px;\\n}\\n\\n.tcn-button:hover {\\n transform: translateY(-1px);\\n box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.1);\\n}\\n\\n.tcn-button:active {\\n transform: translateY(1px);\\n box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.1);\\n}\\n\\n.tcn-slim-button {\\n height: auto;\\n width: auto;\\n padding: 0;\\n}\\n\\n.tcn-slim-button[data-size=\\\"sm\\\"] {\\n min-height: 12px;\\n min-width: 12px;\\n padding: 0;\\n .tcn-icon {\\n min-height: 10px;\\n min-width: 10px;\\n }\\n}\\n\\n.tcn-slim-button[data-size=\\\"md\\\"] {\\n min-height: 18px;\\n min-width: 18px;\\n padding: 0;\\n .tcn-icon {\\n min-height: 14px;\\n min-width: 14px;\\n }\\n}\\n\\n.tcn-slim-button[data-size=\\\"lg\\\"] {\\n min-height: 24px;\\n min-width: 24px;\\n padding: 0;\\n .tcn-icon {\\n min-height: 20px;\\n min-width: 20px;\\n }\\n}\\n\\n.material {\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n}\\n\\n/* ===== SURFACES ===== */\\n.tcn-draggable[data-is-draggable=\\\"true\\\"] {\\n .tcn-drag-handle {\\n cursor: move;\\n }\\n}\\n\\n.tcn-frame[data-is-veil=\\\"true\\\"] {\\n background-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n.tcn-tooltip {\\n background: rgba(57, 85, 120, 0.85);\\n box-shadow: 0px 4px 7px 0px rgba(65, 65, 65, 0.66);\\n color: rgba(255, 255, 255, 1);\\n border-radius: var(--shape-radius-medium);\\n padding: var(--padding-medium);\\n}\\n\\n.tcn-list {\\n gap: var(--gap-medium);\\n .tcn-item {\\n height: 24px;\\n padding: 0px var(--padding-medium);\\n border-radius: var(--shape-radius-medium);\\n }\\n}\\n\\n/* Scaffold: */\\n.tcn-scaffold {\\n --scaffold-v-inset: var(--v-inset, var(--padding-large));\\n --scaffold-header-size: var(--header-size, 40px);\\n --scaffold-footer-size: var(--footer-size, 40px);\\n --scaffold-utility-bar-size: var(--utility-bar-size, 32px);\\n --scaffold-divide-footer: var(--divide-footer, 1);\\n --scaffold-divide-header: var(--divide-header, 1);\\n\\n :where(.tcn-header) {\\n min-height: var(--scaffold-header-size);\\n padding: 0 var(--scaffold-v-inset);\\n gap: var(--gap-medium);\\n }\\n\\n /* Border appears on body only when it follows header or utility-bar */\\n :where(.tcn-header) + :where(.tcn-body),\\n :where(.tcn-utility-bar) + :where(.tcn-body) {\\n border-top: calc(var(--scaffold-divide-header) * 1px) solid\\n var(--foreground-color-primary);\\n }\\n\\n /* Border appears on footer only when it follows body and --scaffold-divide-footer is 1 */\\n :where(.tcn-body) + :where(.tcn-footer) {\\n border-top: calc(var(--scaffold-divide-footer) * 1px) solid\\n var(--foreground-color-primary);\\n }\\n\\n :where(.tcn-utility-bar) {\\n min-height: var(--scaffold-utility-bar-size);\\n padding: 0 var(--scaffold-v-inset);\\n gap: var(--gap-medium);\\n }\\n\\n :where(.tcn-body) {\\n padding: 0 var(--scaffold-v-inset);\\n gap: var(--gap-medium);\\n }\\n\\n :where(.tcn-footer) {\\n gap: var(--gap-medium);\\n min-height: var(--scaffold-footer-size);\\n padding: 0 var(--scaffold-v-inset);\\n }\\n}\\n\\n.tcn-frame-veil[data-is-veil=\\\"true\\\"] {\\n background-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n/* MODAL: */\\n.tcn-modal {\\n --divide-header: 0;\\n\\n :where(.tcn-scaffold) {\\n border-radius: var(--shape-radius-medium);\\n background-color: var(--background-color-primary);\\n overflow: hidden;\\n border: 1px solid var(--foreground-color-primary);\\n }\\n\\n :where(.tcn-typography) {\\n color: inherit;\\n }\\n\\n :where(.tcn-header) {\\n --material: var(--material-secondary-dark);\\n --on-material: 0, 0%, 100%;\\n --action: var(--material-tan);\\n --on-action: 0, 0%, 100%;\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n }\\n\\n :where(.tcn-utility-bar) {\\n --material: var(--material-secondary-dark);\\n --on-material: 0, 0%, 100%;\\n --action: var(--material-tan);\\n --on-action: 0, 0%, 100%;\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n }\\n}\\n\\n/* WINDOW: */\\n.tcn-window {\\n --divide-header: 0;\\n\\n :where(.tcn-scaffold) {\\n box-shadow: 0px 4px 34px 0px #00000096;\\n border-radius: var(--shape-radius-medium);\\n background-color: var(--background-color-primary);\\n overflow: hidden;\\n border: 2px solid white;\\n }\\n\\n :where(.tcn-typography) {\\n color: inherit;\\n }\\n\\n :where(.tcn-header) {\\n --material: var(--material-secondary-dark);\\n --on-material: 0, 0%, 100%;\\n --action: var(--material-tan);\\n --on-action: 0, 0%, 100%;\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n }\\n\\n :where(.tcn-utility-bar) {\\n --material: var(--material-secondary-dark);\\n --on-material: 0, 0%, 100%;\\n --action: var(--material-tan);\\n --on-action: 0, 0%, 100%;\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n }\\n}\\n\\n.tcn-pop-confirm {\\n --divide-header: 0;\\n --v-inset: var(--padding-medium);\\n\\n :where(.tcn-scaffold) {\\n box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.4);\\n border-radius: var(--shape-radius-medium);\\n background-color: var(--background-color-primary);\\n overflow: hidden;\\n }\\n\\n :where(.tcn-typography) {\\n color: inherit;\\n }\\n\\n :where(.tcn-header) {\\n min-height: 32px;\\n --material: var(--material-secondary-dark);\\n --on-material: 0, 0%, 100%;\\n --action: var(--material-tan);\\n --on-action: 0, 0%, 100%;\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n }\\n\\n :where(.tcn-utility-bar) {\\n --material: var(--material-secondary-dark);\\n --on-material: 0, 0%, 100%;\\n --action: var(--material-tan);\\n --on-action: 0, 0%, 100%;\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n }\\n}\\n\\n/* PANEL */\\n.tcn-panel {\\n background-color: var(--background-color-primary);\\n border-radius: var(--shape-radius-medium);\\n overflow: hidden;\\n}\\n\\n/* Card */\\n.tcn-card {\\n --header-size: 32px;\\n --footer-size: 32px;\\n --utility-bar-size: 24px;\\n --divide-header: 0;\\n\\n background-color: var(--background-color-primary);\\n border-radius: var(--shape-radius-medium);\\n border: 1px solid var(--foreground-color-primary);\\n overflow: hidden;\\n\\n :where(.tcn-header) {\\n /* TODO: This should be a variable */\\n background-color: #ecf4fb;\\n }\\n\\n :where(.tcn-utility-bar) {\\n /* TODO: This should be a variable */\\n background-color: #ecf4fb;\\n }\\n}\\n\"","import css from './ergo_theme.css?raw';\n\nexport const ergoStyleSheet = new CSSStyleSheet();\nergoStyleSheet.replaceSync(css);\n"],"names":["css","ergoStyleSheet"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCEFC,IAAiB,IAAI,cAAA;AAClCA,EAAe,YAAYD,CAAG;"}
1
+ {"version":3,"file":"ergo_theme.js","sources":["../../../../src/themes/themes/ergo/ergo_theme.css?raw","../../../../src/themes/themes/ergo/ergo_theme.ts"],"sourcesContent":["export default \"/* https://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 */\\nhtml,\\nbody,\\ndiv,\\nspan,\\napplet,\\nobject,\\niframe,\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\np,\\nblockquote,\\npre,\\na,\\nabbr,\\nacronym,\\naddress,\\nbig,\\ncite,\\ncode,\\ndel,\\ndfn,\\nem,\\nimg,\\nins,\\nkbd,\\nq,\\ns,\\nsamp,\\nsmall,\\nstrike,\\nstrong,\\nsub,\\nsup,\\ntt,\\nvar,\\nb,\\nu,\\ni,\\ncenter,\\ndl,\\ndt,\\ndd,\\nol,\\nul,\\nli,\\nfieldset,\\nform,\\nlabel,\\nlegend,\\ntable,\\ncaption,\\ntbody,\\ntfoot,\\nthead,\\ntr,\\nth,\\ntd,\\narticle,\\naside,\\ncanvas,\\ndetails,\\nembed,\\nfigure,\\nfigcaption,\\nfooter,\\nheader,\\nhgroup,\\nmenu,\\nnav,\\noutput,\\nruby,\\nsection,\\nsummary,\\ntime,\\nmark,\\naudio,\\nvideo {\\n margin: 0;\\n padding: 0;\\n border: 0;\\n font-size: 100%;\\n font: inherit;\\n vertical-align: baseline;\\n}\\n/* HTML5 display-role reset for older browsers */\\narticle,\\naside,\\ndetails,\\nfigcaption,\\nfigure,\\nfooter,\\nheader,\\nhgroup,\\nmenu,\\nnav,\\nsection {\\n display: block;\\n}\\nbody {\\n line-height: 1;\\n}\\nol,\\nul {\\n list-style: none;\\n}\\nblockquote,\\nq {\\n quotes: none;\\n}\\nblockquote:before,\\nblockquote:after,\\nq:before,\\nq:after {\\n content: \\\"\\\";\\n content: none;\\n}\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0;\\n}\\n\\nlegend {\\n all: unset;\\n display: block;\\n margin: 0;\\n padding: 0;\\n font: inherit;\\n color: inherit;\\n}\\n\\n/* ===== CSS VARIABLES ===== */\\n:root {\\n --scalar: 1;\\n --accent-color: #cd6b2c;\\n\\n /* Typography */\\n --font-color: #395578;\\n --font-family: \\\"Lato\\\", sans-serif;\\n --font-size: 12px;\\n\\n /* Spacing */\\n --gap-small: 4px;\\n --gap-medium: 8px;\\n --gap-large: 16px;\\n\\n --padding-small: 4px;\\n --padding-medium: 8px;\\n --padding-large: 16px;\\n\\n /* Status Colors */\\n --status-color-disabled: #7f7f7f;\\n --status-color-info: #008cff;\\n --status-color-warning: #ffff00;\\n --status-color-positive: #00ff00;\\n --status-color-error: #ff0000;\\n\\n --async-color-initial: #c0c0c0;\\n --async-color-pending: #008cff;\\n --async-color-success: #00ff00;\\n --async-color-failed: #ff0000;\\n\\n /* Shape */\\n --shape-radius-small: 2px;\\n --shape-radius-medium: 4px;\\n --shape-radius-large: 8px;\\n\\n /* Palette */\\n --primary-color-faint: #c0c0c0;\\n --primary-color: #008cff;\\n --primary-color-strong: #008cff;\\n\\n --secondary-color-faint: #c0c0c0;\\n --secondary-color: #008cff;\\n --secondary-color-strong: #008cff;\\n\\n --tertiary-color-faint: #c0c0c0;\\n --tertiary-color: #008cff;\\n --tertiary-color-strong: #008cff;\\n\\n --quaternary-color-faint: #c0c0c0;\\n --quaternary-color: #008cff;\\n --quaternary-color-strong: #008cff;\\n\\n --background-color-primary: #ffffff;\\n --background-color-secondary: #ffffff;\\n --background-color-tertiary: #ffffff;\\n --background-color-quaternary: #ffffff;\\n\\n --foreground-color-primary: #aaa;\\n --foreground-color-secondary: #222222;\\n --foreground-color-tertiary: #222222;\\n --foreground-color-quaternary: #222222;\\n\\n --material-disabled: #d3d3d3;\\n --material-secondary-dark: 197 29.1% 40.4%;\\n --material-tan: 33, 22%, 84%;\\n\\n /* Default Material */\\n --action: 23, 65%, 49%;\\n --on-action: 0, 0%, 100%;\\n --material: 0, 0%, 100%;\\n --on-material: 213, 35.6%, 34.7%;\\n\\n --action-dangerous: 0, 90%, 50%;\\n --action-cautious: 53, 90%, 60%;\\n --action-neutral: var(--action);\\n --action-suggested: 202, 90%, 40%;\\n --action-encouraged: 120, 90%, 40%;\\n}\\n\\n* {\\n position: relative;\\n box-sizing: border-box;\\n}\\n/* ===== Actions ===== */\\n\\n.tcn-interactive {\\n cursor: pointer;\\n user-select: none;\\n transition:\\n transform 0.1s,\\n background 0.1s,\\n color 0.1s;\\n\\n --act: hsl(var(--interactive-color, var(--action)));\\n --on-act: hsl(var(--on-action));\\n /* Could use hsl here if we made three color variables for each of the hsl values */\\n --act-down: color-mix(in srgb, var(--act), black 8%);\\n --act-raised: color-mix(in srgb, var(--act), white 8%);\\n --act-faint: hsla(var(--action), 0.2);\\n --on-mat: hsl(var(--on-material));\\n --on-mat-faint: hsla(var(--on-material), 0.2);\\n --mat: hsl(var(--material));\\n --mat-down: color-mix(in srgb, var(--mat), black 8%);\\n --mat-raised: color-mix(in srgb, var(--mat), white 8%);\\n}\\n\\n.tcn-interactive[data-is-disabled=\\\"true\\\"] {\\n pointer-events: none;\\n cursor: not-allowed;\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"primary\\\"] {\\n background: var(--act);\\n color: var(--on-act);\\n border: 1px solid var(--act);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"primary\\\"]:focus-visible {\\n outline: 2px dashed var(--act);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"primary\\\"][data-is-disabled=\\\"true\\\"] {\\n background: var(--material-disabled);\\n color: white;\\n border: 1px solid var(--material-disabled);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"primary\\\"]:hover {\\n background: var(--act-raised);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"primary\\\"]:active {\\n background: var(--act-down);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"secondary\\\"] {\\n background: transparent;\\n color: var(--on-mat);\\n border: 1px solid var(--on-mat);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"secondary\\\"]:focus-visible {\\n outline: 2px dashed var(--on-mat);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"secondary\\\"][data-is-disabled=\\\"true\\\"] {\\n color: var(--material-disabled);\\n border: 1px solid var(--material-disabled);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"secondary\\\"]:hover {\\n background: var(--on-mat-faint);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"secondary\\\"]:active {\\n background: var(--mat-down);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"tertiary\\\"] {\\n background: transparent;\\n color: var(--on-mat);\\n border: 1px solid transparent;\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"tertiary\\\"]:focus-visible {\\n outline: 2px dashed var(--on-mat);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"tertiary\\\"][data-is-disabled=\\\"true\\\"] {\\n color: var(--material-disabled);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"tertiary\\\"]:hover {\\n text-decoration: underline;\\n text-decoration-color: var(--on-mat);\\n text-decoration-thickness: 1px;\\n text-underline-offset: 4px;\\n color: var(--on-mat);\\n background: var(--on-mat-faint);\\n}\\n\\n.tcn-interactive[data-hierarchy=\\\"tertiary\\\"]:active {\\n background: var(--mat-down);\\n}\\n\\n/* Button */\\n\\n.tcn-base-button {\\n --action: var(var(--button-color), var(--action));\\n}\\n\\n.tcn-base-button[data-severity=\\\"dangerous\\\"] {\\n --action: var(--action-dangerous);\\n}\\n\\n.tcn-base-button[data-severity=\\\"cautious\\\"] {\\n --action: var(--action-cautious);\\n --on-action: var(--on-material);\\n}\\n\\n/* .tcn-base-button[data-severity=\\\"neutral\\\"] {\\n --action: var(--action-neutral);\\n} */\\n\\n.tcn-base-button[data-severity=\\\"suggested\\\"] {\\n --action: var(--action-suggested);\\n}\\n\\n.tcn-base-button[data-severity=\\\"encouraged\\\"] {\\n --action: var(--action-encouraged);\\n}\\n\\n.tcn-button {\\n border-radius: 4px;\\n}\\n\\n.tcn-button[data-size=\\\"sm\\\"] {\\n padding: 0px 8px;\\n min-height: 22px;\\n}\\n\\n.tcn-button[data-size=\\\"md\\\"] {\\n padding: 0px 12px;\\n min-height: 26px;\\n}\\n\\n.tcn-button[data-size=\\\"lg\\\"] {\\n padding: 0px 16px;\\n min-height: 32px;\\n}\\n\\n.tcn-button:hover {\\n transform: translateY(-1px);\\n box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.1);\\n}\\n\\n.tcn-button:active {\\n transform: translateY(1px);\\n box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.1);\\n}\\n\\n.tcn-slim-button {\\n height: auto;\\n width: auto;\\n padding: 0;\\n}\\n\\n.tcn-slim-button[data-size=\\\"sm\\\"] {\\n min-height: 12px;\\n min-width: 12px;\\n padding: 0;\\n .tcn-icon {\\n min-height: 10px;\\n min-width: 10px;\\n }\\n}\\n\\n.tcn-slim-button[data-size=\\\"md\\\"] {\\n min-height: 18px;\\n min-width: 18px;\\n padding: 0;\\n .tcn-icon {\\n min-height: 14px;\\n min-width: 14px;\\n }\\n}\\n\\n.tcn-slim-button[data-size=\\\"lg\\\"] {\\n min-height: 24px;\\n min-width: 24px;\\n padding: 0;\\n .tcn-icon {\\n min-height: 20px;\\n min-width: 20px;\\n }\\n}\\n\\n.material {\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n}\\n\\n/* ===== SURFACES ===== */\\n.tcn-draggable[data-is-draggable=\\\"true\\\"] {\\n .tcn-drag-handle {\\n cursor: move;\\n }\\n}\\n\\n.tcn-frame[data-is-veil=\\\"true\\\"] {\\n background-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n.tcn-tooltip {\\n background: rgba(57, 85, 120, 0.85);\\n box-shadow: 0px 4px 7px 0px rgba(65, 65, 65, 0.66);\\n color: rgba(255, 255, 255, 1);\\n border-radius: var(--shape-radius-medium);\\n padding: var(--padding-medium);\\n}\\n\\n.tcn-list {\\n gap: var(--gap-medium);\\n .tcn-item {\\n height: 24px;\\n padding: 0px var(--padding-medium);\\n border-radius: var(--shape-radius-medium);\\n }\\n}\\n\\n/* Scaffold: */\\n.tcn-scaffold {\\n --scaffold-v-inset: var(--v-inset, var(--padding-large));\\n --scaffold-header-size: var(--header-size, 40px);\\n --scaffold-footer-size: var(--footer-size, 40px);\\n --scaffold-utility-bar-size: var(--utility-bar-size, 32px);\\n --scaffold-divide-footer: var(--divide-footer, 1);\\n --scaffold-divide-header: var(--divide-header, 1);\\n\\n :where(.tcn-header) {\\n min-height: var(--scaffold-header-size);\\n padding: 0 var(--scaffold-v-inset);\\n gap: var(--gap-medium);\\n }\\n\\n /* Border appears on body only when it follows header or utility-bar */\\n :where(.tcn-header) + :where(.tcn-body),\\n :where(.tcn-utility-bar) + :where(.tcn-body) {\\n border-top: calc(var(--scaffold-divide-header) * 1px) solid\\n var(--foreground-color-primary);\\n }\\n\\n /* Border appears on footer only when it follows body and --scaffold-divide-footer is 1 */\\n :where(.tcn-body) + :where(.tcn-footer) {\\n border-top: calc(var(--scaffold-divide-footer) * 1px) solid\\n var(--foreground-color-primary);\\n }\\n\\n :where(.tcn-utility-bar) {\\n min-height: var(--scaffold-utility-bar-size);\\n padding: 0 var(--scaffold-v-inset);\\n gap: var(--gap-medium);\\n }\\n\\n :where(.tcn-body) {\\n padding: 0 var(--scaffold-v-inset);\\n gap: var(--gap-medium);\\n }\\n\\n :where(.tcn-footer) {\\n gap: var(--gap-medium);\\n min-height: var(--scaffold-footer-size);\\n padding: 0 var(--scaffold-v-inset);\\n }\\n}\\n\\n.tcn-frame-veil[data-is-veil=\\\"true\\\"] {\\n background-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n/* MODAL: */\\n.tcn-modal {\\n --divide-header: 0;\\n\\n :where(.tcn-scaffold) {\\n border-radius: var(--shape-radius-medium);\\n background-color: var(--background-color-primary);\\n overflow: hidden;\\n border: 1px solid var(--foreground-color-primary);\\n }\\n\\n :where(.tcn-typography) {\\n color: inherit;\\n }\\n\\n :where(.tcn-header) {\\n --material: var(--material-secondary-dark);\\n --on-material: 0, 0%, 100%;\\n --action: var(--material-tan);\\n --on-action: 0, 0%, 100%;\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n }\\n\\n :where(.tcn-utility-bar) {\\n --material: var(--material-secondary-dark);\\n --on-material: 0, 0%, 100%;\\n --action: var(--material-tan);\\n --on-action: 0, 0%, 100%;\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n }\\n}\\n\\n/* WINDOW: */\\n.tcn-window {\\n --divide-header: 0;\\n\\n :where(.tcn-scaffold) {\\n box-shadow: 0px 4px 34px 0px #00000096;\\n border-radius: var(--shape-radius-medium);\\n background-color: var(--background-color-primary);\\n overflow: hidden;\\n border: 2px solid white;\\n }\\n\\n :where(.tcn-typography) {\\n color: inherit;\\n }\\n\\n :where(.tcn-header) {\\n --material: var(--material-secondary-dark);\\n --on-material: 0, 0%, 100%;\\n --action: var(--material-tan);\\n --on-action: 0, 0%, 100%;\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n }\\n\\n :where(.tcn-utility-bar) {\\n --material: var(--material-secondary-dark);\\n --on-material: 0, 0%, 100%;\\n --action: var(--material-tan);\\n --on-action: 0, 0%, 100%;\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n }\\n}\\n\\n.tcn-pop-confirm {\\n --divide-header: 0;\\n --v-inset: var(--padding-medium);\\n\\n :where(.tcn-scaffold) {\\n box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.4);\\n border-radius: var(--shape-radius-medium);\\n background-color: var(--background-color-primary);\\n overflow: hidden;\\n }\\n\\n :where(.tcn-typography) {\\n color: inherit;\\n }\\n\\n :where(.tcn-header) {\\n min-height: 32px;\\n --material: var(--material-secondary-dark);\\n --on-material: 0, 0%, 100%;\\n --action: var(--material-tan);\\n --on-action: 0, 0%, 100%;\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n }\\n\\n :where(.tcn-utility-bar) {\\n --material: var(--material-secondary-dark);\\n --on-material: 0, 0%, 100%;\\n --action: var(--material-tan);\\n --on-action: 0, 0%, 100%;\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n }\\n}\\n\\n/* PANEL */\\n.tcn-panel {\\n background-color: var(--background-color-primary);\\n border-radius: var(--shape-radius-medium);\\n overflow: hidden;\\n}\\n\\n/* Card */\\n.tcn-card {\\n --header-size: 32px;\\n --footer-size: 32px;\\n --utility-bar-size: 24px;\\n --divide-header: 0;\\n\\n background-color: var(--background-color-primary);\\n border-radius: var(--shape-radius-medium);\\n border: 1px solid var(--foreground-color-primary);\\n overflow: hidden;\\n\\n :where(.tcn-header) {\\n /* TODO: This should be a variable */\\n background-color: #ecf4fb;\\n }\\n\\n :where(.tcn-utility-bar) {\\n /* TODO: This should be a variable */\\n background-color: #ecf4fb;\\n }\\n}\\n\"","import css from './ergo_theme.css?raw';\n\nexport const ergoStyleSheet = new CSSStyleSheet();\nergoStyleSheet.replaceSync(css);\n"],"names":["css","ergoStyleSheet"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCEFC,IAAiB,IAAI,cAAA;AAClCA,EAAe,YAAYD,CAAG;"}
@@ -1,14 +1,14 @@
1
1
  import { jsxs as t, jsx as e } from "react/jsx-runtime";
2
- import h from "react";
2
+ import u from "react";
3
3
  import { clsx as o } from "clsx";
4
- import { Spacer as u } from "../../stacks/spacer.js";
4
+ import { Spacer as h } from "../../stacks/spacer.js";
5
5
  import { VStack as c } from "../../stacks/v_stack.js";
6
6
  import { ZStack as r } from "../../stacks/z_stack.js";
7
7
  import { Bubble as g } from "../bubble/bubble.js";
8
- import '../../badge.css';const s = "_badge-bubble_7fe9ed5", f = { "badge-bubble": s }, j = h.forwardRef(
8
+ import '../../badge.css';const s = "_badge-bubble_7fe9ed5", f = { "badge-bubble": s }, S = u.forwardRef(
9
9
  ({
10
- value: i,
11
- children: a,
10
+ value: a,
11
+ children: i,
12
12
  backgroundColor: b,
13
13
  textColor: d,
14
14
  className: l,
@@ -26,7 +26,7 @@ import '../../badge.css';const s = "_badge-bubble_7fe9ed5", f = { "badge-bubble"
26
26
  className: o("badge", l),
27
27
  ...n,
28
28
  children: [
29
- /* @__PURE__ */ e(r, { zIndex: 0, inline: !0, width: "auto", height: "auto", children: a }),
29
+ /* @__PURE__ */ e(r, { zIndex: 0, inline: !0, width: "auto", height: "auto", children: i }),
30
30
  /* @__PURE__ */ t(c, { zIndex: 1, height: "100%", width: "auto", children: [
31
31
  /* @__PURE__ */ e(
32
32
  g,
@@ -35,16 +35,16 @@ import '../../badge.css';const s = "_badge-bubble_7fe9ed5", f = { "badge-bubble"
35
35
  backgroundColor: b,
36
36
  textColor: d,
37
37
  elevate: !0,
38
- children: i
38
+ children: a
39
39
  }
40
40
  ),
41
- /* @__PURE__ */ e(u, { height: "100%" })
41
+ /* @__PURE__ */ e(h, { height: "100%" })
42
42
  ] })
43
43
  ]
44
44
  }
45
45
  )
46
46
  );
47
47
  export {
48
- j as Badge
48
+ S as Badge
49
49
  };
50
50
  //# sourceMappingURL=badge.js.map
@@ -3,24 +3,24 @@ import { clsx as s } from "clsx";
3
3
  import u from "react";
4
4
  import { theme as f } from "../../themes/theme_variables.js";
5
5
  import "../../themes/stylesheets/reset.js";
6
- import { HStack as p } from "../../stacks/h_stack.js";
7
- import '../../bubble.css';const d = "_bubble_d3b757e", h = { bubble: d }, R = u.forwardRef(function({
6
+ import { HStack as d } from "../../stacks/h_stack.js";
7
+ import '../../bubble.css';const p = "_bubble_d3b757e", h = { bubble: p }, B = u.forwardRef(function({
8
8
  children: e,
9
9
  className: t,
10
10
  style: o,
11
11
  backgroundColor: b = f.accentColor,
12
- textColor: r = "#fff",
13
- size: l = "md",
12
+ textColor: l = "#fff",
13
+ size: r = "md",
14
14
  elevate: a = !1,
15
15
  ...c
16
16
  }, i) {
17
17
  const n = {
18
- "--bubble-text-color": r,
18
+ "--bubble-text-color": l,
19
19
  "--bubble-color": b,
20
20
  ...o
21
21
  };
22
22
  return /* @__PURE__ */ m(
23
- p,
23
+ d,
24
24
  {
25
25
  inline: !0,
26
26
  className: s(h.bubble, "bubble", t),
@@ -30,7 +30,7 @@ import '../../bubble.css';const d = "_bubble_d3b757e", h = { bubble: d }, R = u.
30
30
  style: n,
31
31
  hAlign: "center",
32
32
  vAlign: "center",
33
- "data-size": l,
33
+ "data-size": r,
34
34
  "data-elevate": a,
35
35
  padding: "4px",
36
36
  ...c,
@@ -39,6 +39,6 @@ import '../../bubble.css';const d = "_bubble_d3b757e", h = { bubble: d }, R = u.
39
39
  );
40
40
  });
41
41
  export {
42
- R as Bubble
42
+ B as Bubble
43
43
  };
44
44
  //# sourceMappingURL=bubble.js.map
@@ -2,9 +2,9 @@ import { jsx as m } from "react/jsx-runtime";
2
2
  import { HStack as n } from "../../stacks/h_stack.js";
3
3
  import { clsx as f } from "clsx";
4
4
  import h from "react";
5
- import { theme as s } from "../../themes/theme_variables.js";
5
+ import { theme as l } from "../../themes/theme_variables.js";
6
6
  import "../../themes/stylesheets/reset.js";
7
- import '../../chip.css';const l = "_chip_35f6f0b", a = { chip: l }, R = h.forwardRef(function({ children: t, style: o, className: i, color: r = s.accentColor, ...c }, e) {
7
+ import '../../chip.css';const s = "_chip_35f6f0b", a = { chip: s }, w = h.forwardRef(function({ children: t, style: o, className: i, color: r = l.accentColor, ...c }, e) {
8
8
  const p = {
9
9
  "--chip-color": r,
10
10
  ...o
@@ -25,6 +25,6 @@ import '../../chip.css';const l = "_chip_35f6f0b", a = { chip: l }, R = h.forwar
25
25
  );
26
26
  });
27
27
  export {
28
- R as Chip
28
+ w as Chip
29
29
  };
30
30
  //# sourceMappingURL=chip.js.map
@@ -1,4 +1,4 @@
1
- import m, { useRef as p, useCallback as L, useEffect as W } from "react";
1
+ import d, { useRef as p, useCallback as L, useEffect as W } from "react";
2
2
  import { useForkRef as T } from "./hooks/use_fork_ref.js";
3
3
  const C = {
4
4
  onClick: "click",
@@ -8,16 +8,16 @@ const C = {
8
8
  onTouchStart: "touchstart",
9
9
  onTouchEnd: "touchend"
10
10
  };
11
- function w(o, t, d, s) {
12
- if (!d)
11
+ function w(o, t, m, s) {
12
+ if (!m)
13
13
  return !0;
14
14
  let n;
15
15
  return o.composedPath ? n = [t, ...s].find((e) => o.composedPath().indexOf(e) > -1) !== void 0 : n = !document.documentElement.contains(o.target) || [t, ...s].find((e) => e?.contains(o.target)) !== void 0, n;
16
16
  }
17
- const F = m.forwardRef(
18
- function({ children: t, mouseEvent: d, touchEvent: s, onClickAway: n, refs: e = [], isException: a }, R) {
19
- const f = p(null), v = p(!0), E = C[d || "onClick"], l = g[s || "onTouchEnd"], k = T(R, f, t.ref), i = m.useRef(!1);
20
- m.useEffect(() => (window.setTimeout(() => {
17
+ const F = d.forwardRef(
18
+ function({ children: t, mouseEvent: m, touchEvent: s, onClickAway: n, refs: e = [], isException: a }, R) {
19
+ const f = p(null), v = p(!0), l = C[m || "onClick"], E = g[s || "onTouchEnd"], k = T(R, f, t.ref), i = d.useRef(!1);
20
+ d.useEffect(() => (window.setTimeout(() => {
21
21
  i.current = !0;
22
22
  }, 0), () => {
23
23
  i.current = !1;
@@ -44,9 +44,9 @@ const F = m.forwardRef(
44
44
  },
45
45
  [n, e, a]
46
46
  );
47
- return W(() => (document.addEventListener("mousedown", r), document.addEventListener("touchstart", r), document.addEventListener(E, c), document.addEventListener(l, c), () => {
48
- document.removeEventListener("mousedown", r), document.removeEventListener("touchstart", r), document.removeEventListener(E, c), document.removeEventListener(l, c);
49
- }), [l, E, c, r]), m.cloneElement(t, {
47
+ return W(() => (document.addEventListener("mousedown", r), document.addEventListener("touchstart", r), document.addEventListener(l, c), document.addEventListener(E, c), () => {
48
+ document.removeEventListener("mousedown", r), document.removeEventListener("touchstart", r), document.removeEventListener(l, c), document.removeEventListener(E, c);
49
+ }), [E, l, c, r]), d.cloneElement(t, {
50
50
  ...t.props,
51
51
  ref: k
52
52
  });
@@ -1 +1 @@
1
- {"version":3,"file":"click_away_listener.js","sources":["../../src/utils/click_away_listener.tsx"],"sourcesContent":["import React, { useEffect, useCallback, useRef } from 'react';\nimport { useForkRef } from './hooks/use_fork_ref.js';\nexport interface ClickAwayListenerProps {\n children: React.ReactElement;\n onClickAway: (event: React.MouseEvent | React.TouchEvent) => void;\n mouseEvent?: 'onMouseUp' | 'onMouseDown' | 'onClick';\n touchEvent?: 'onTouchStart' | 'onTouchEnd';\n isException?: (target: HTMLElement) => boolean;\n // An array of refs that wont trigger the click away listener\n refs?: React.RefObject<Element>[];\n}\nconst eventMap = {\n onClick: 'click',\n onMouseDown: 'mousedown',\n onMouseUp: 'mouseup',\n};\nconst touchMap = {\n onTouchStart: 'touchstart',\n onTouchEnd: 'touchend',\n};\n\nexport function isEventWithinElement(\n event: MouseEvent | TouchEvent,\n node: HTMLElement | null,\n activated: boolean,\n refs: (Element | null)[]\n) {\n if (!activated) {\n return true;\n }\n\n let isWithinElement: boolean;\n\n if (event.composedPath) {\n isWithinElement =\n [node, ...refs].find((ref: any) => {\n return event.composedPath().indexOf(ref) > -1;\n }) !== undefined;\n } else {\n isWithinElement =\n !document.documentElement.contains(event.target as any) ||\n [node, ...refs].find((ref: any) => {\n return ref?.contains(event.target);\n }) !== undefined;\n }\n\n return isWithinElement;\n}\n\nexport const ClickAwayListener = React.forwardRef<HTMLElement, ClickAwayListenerProps>(\n function ClickAwayListener(\n { children, mouseEvent, touchEvent, onClickAway, refs = [], isException },\n ref\n ) {\n const nodeRef = useRef<HTMLElement | null>(null);\n const startedActionWithinElementRef = useRef<boolean>(true);\n const DOMMouseEvent = eventMap[mouseEvent || 'onClick'];\n const DOMTouchEvent = touchMap[touchEvent || 'onTouchEnd'];\n const newRef = useForkRef(ref, nodeRef, (children as any).ref);\n const activatedRef = React.useRef(false);\n\n React.useEffect(() => {\n // Ensure that this component is not \"activated\" synchronously.\n // https://github.com/facebook/react/issues/20074\n window.setTimeout(() => {\n activatedRef.current = true;\n }, 0);\n return () => {\n activatedRef.current = false;\n };\n }, []);\n\n const trackAction = useCallback(\n (event: any) => {\n startedActionWithinElementRef.current = isEventWithinElement(\n event,\n nodeRef.current,\n activatedRef.current,\n refs.map(r => r.current)\n );\n },\n [refs]\n );\n\n const eventHandler = useCallback(\n (event: any) => {\n const startedFromWithinElement = startedActionWithinElementRef.current;\n const isWithinElement = isEventWithinElement(\n event,\n nodeRef.current,\n activatedRef.current,\n refs.map(r => r.current)\n );\n\n if (\n !isWithinElement &&\n !startedFromWithinElement &&\n (!isException || !isException(event.target))\n ) {\n onClickAway(event);\n }\n },\n [onClickAway, refs, isException]\n );\n\n useEffect(() => {\n document.addEventListener('mousedown', trackAction);\n document.addEventListener('touchstart', trackAction);\n document.addEventListener(DOMMouseEvent, eventHandler);\n document.addEventListener(DOMTouchEvent, eventHandler);\n return () => {\n document.removeEventListener('mousedown', trackAction);\n document.removeEventListener('touchstart', trackAction);\n document.removeEventListener(DOMMouseEvent, eventHandler);\n document.removeEventListener(DOMTouchEvent, eventHandler);\n };\n }, [DOMTouchEvent, DOMMouseEvent, eventHandler, trackAction]);\n\n return React.cloneElement(children, {\n ...children.props,\n ref: newRef,\n });\n }\n);\n"],"names":["eventMap","touchMap","isEventWithinElement","event","node","activated","refs","isWithinElement","ref","ClickAwayListener","React","children","mouseEvent","touchEvent","onClickAway","isException","nodeRef","useRef","startedActionWithinElementRef","DOMMouseEvent","DOMTouchEvent","newRef","useForkRef","activatedRef","trackAction","useCallback","r","eventHandler","startedFromWithinElement","useEffect"],"mappings":";;AAWA,MAAMA,IAAW;AAAA,EACf,SAAS;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AACb,GACMC,IAAW;AAAA,EACf,cAAc;AAAA,EACd,YAAY;AACd;AAEO,SAASC,EACdC,GACAC,GACAC,GACAC,GACA;AACA,MAAI,CAACD;AACH,WAAO;AAGT,MAAIE;AAEJ,SAAIJ,EAAM,eACRI,IACE,CAACH,GAAM,GAAGE,CAAI,EAAE,KAAK,CAACE,MACbL,EAAM,aAAA,EAAe,QAAQK,CAAG,IAAI,EAC5C,MAAM,SAETD,IACE,CAAC,SAAS,gBAAgB,SAASJ,EAAM,MAAa,KACtD,CAACC,GAAM,GAAGE,CAAI,EAAE,KAAK,CAACE,MACbA,GAAK,SAASL,EAAM,MAAM,CAClC,MAAM,QAGJI;AACT;AAEO,MAAME,IAAoBC,EAAM;AAAA,EACrC,SACE,EAAE,UAAAC,GAAU,YAAAC,GAAY,YAAAC,GAAY,aAAAC,GAAa,MAAAR,IAAO,CAAA,GAAI,aAAAS,EAAA,GAC5DP,GACA;AACA,UAAMQ,IAAUC,EAA2B,IAAI,GACzCC,IAAgCD,EAAgB,EAAI,GACpDE,IAAgBnB,EAASY,KAAc,SAAS,GAChDQ,IAAgBnB,EAASY,KAAc,YAAY,GACnDQ,IAASC,EAAWd,GAAKQ,GAAUL,EAAiB,GAAG,GACvDY,IAAeb,EAAM,OAAO,EAAK;AAEvC,IAAAA,EAAM,UAAU,OAGd,OAAO,WAAW,MAAM;AACtB,MAAAa,EAAa,UAAU;AAAA,IACzB,GAAG,CAAC,GACG,MAAM;AACX,MAAAA,EAAa,UAAU;AAAA,IACzB,IACC,CAAA,CAAE;AAEL,UAAMC,IAAcC;AAAA,MAClB,CAACtB,MAAe;AACd,QAAAe,EAA8B,UAAUhB;AAAA,UACtCC;AAAA,UACAa,EAAQ;AAAA,UACRO,EAAa;AAAA,UACbjB,EAAK,IAAI,CAAAoB,MAAKA,EAAE,OAAO;AAAA,QAAA;AAAA,MAE3B;AAAA,MACA,CAACpB,CAAI;AAAA,IAAA,GAGDqB,IAAeF;AAAA,MACnB,CAACtB,MAAe;AACd,cAAMyB,IAA2BV,EAA8B;AAQ/D,QACE,CARsBhB;AAAA,UACtBC;AAAA,UACAa,EAAQ;AAAA,UACRO,EAAa;AAAA,UACbjB,EAAK,IAAI,CAAAoB,MAAKA,EAAE,OAAO;AAAA,QAAA,KAKvB,CAACE,MACA,CAACb,KAAe,CAACA,EAAYZ,EAAM,MAAM,MAE1CW,EAAYX,CAAK;AAAA,MAErB;AAAA,MACA,CAACW,GAAaR,GAAMS,CAAW;AAAA,IAAA;AAGjC,WAAAc,EAAU,OACR,SAAS,iBAAiB,aAAaL,CAAW,GAClD,SAAS,iBAAiB,cAAcA,CAAW,GACnD,SAAS,iBAAiBL,GAAeQ,CAAY,GACrD,SAAS,iBAAiBP,GAAeO,CAAY,GAC9C,MAAM;AACX,eAAS,oBAAoB,aAAaH,CAAW,GACrD,SAAS,oBAAoB,cAAcA,CAAW,GACtD,SAAS,oBAAoBL,GAAeQ,CAAY,GACxD,SAAS,oBAAoBP,GAAeO,CAAY;AAAA,IAC1D,IACC,CAACP,GAAeD,GAAeQ,GAAcH,CAAW,CAAC,GAErDd,EAAM,aAAaC,GAAU;AAAA,MAClC,GAAGA,EAAS;AAAA,MACZ,KAAKU;AAAA,IAAA,CACN;AAAA,EACH;AACF;"}
1
+ {"version":3,"file":"click_away_listener.js","sources":["../../src/utils/click_away_listener.tsx"],"sourcesContent":["import React, { useEffect, useCallback, useRef } from 'react';\nimport { useForkRef } from './hooks/use_fork_ref.js';\nexport interface ClickAwayListenerProps {\n children: React.ReactElement;\n onClickAway: (event: React.MouseEvent | React.TouchEvent) => void;\n mouseEvent?: 'onMouseUp' | 'onMouseDown' | 'onClick';\n touchEvent?: 'onTouchStart' | 'onTouchEnd';\n isException?: (target: HTMLElement) => boolean;\n // An array of refs that wont trigger the click away listener\n refs?: React.RefObject<Element>[];\n}\nconst eventMap = {\n onClick: 'click',\n onMouseDown: 'mousedown',\n onMouseUp: 'mouseup',\n};\nconst touchMap = {\n onTouchStart: 'touchstart',\n onTouchEnd: 'touchend',\n};\n\nexport function isEventWithinElement(\n event: MouseEvent | TouchEvent,\n node: HTMLElement | null,\n activated: boolean,\n refs: (Element | null)[]\n) {\n if (!activated) {\n return true;\n }\n\n let isWithinElement: boolean;\n\n if (event.composedPath) {\n isWithinElement =\n [node, ...refs].find((ref: any) => {\n return event.composedPath().indexOf(ref) > -1;\n }) !== undefined;\n } else {\n isWithinElement =\n !document.documentElement.contains(event.target as any) ||\n [node, ...refs].find((ref: any) => {\n return ref?.contains(event.target);\n }) !== undefined;\n }\n\n return isWithinElement;\n}\n\nexport const ClickAwayListener = React.forwardRef<HTMLElement, ClickAwayListenerProps>(\n function ClickAwayListener(\n { children, mouseEvent, touchEvent, onClickAway, refs = [], isException },\n ref\n ) {\n const nodeRef = useRef<HTMLElement | null>(null);\n const startedActionWithinElementRef = useRef<boolean>(true);\n const DOMMouseEvent = eventMap[mouseEvent || 'onClick'];\n const DOMTouchEvent = touchMap[touchEvent || 'onTouchEnd'];\n const newRef = useForkRef(ref, nodeRef, (children as any).ref);\n const activatedRef = React.useRef(false);\n\n React.useEffect(() => {\n // Ensure that this component is not \"activated\" synchronously.\n // https://github.com/facebook/react/issues/20074\n window.setTimeout(() => {\n activatedRef.current = true;\n }, 0);\n return () => {\n activatedRef.current = false;\n };\n }, []);\n\n const trackAction = useCallback(\n (event: any) => {\n startedActionWithinElementRef.current = isEventWithinElement(\n event,\n nodeRef.current,\n activatedRef.current,\n refs.map(r => r.current)\n );\n },\n [refs]\n );\n\n const eventHandler = useCallback(\n (event: any) => {\n const startedFromWithinElement = startedActionWithinElementRef.current;\n const isWithinElement = isEventWithinElement(\n event,\n nodeRef.current,\n activatedRef.current,\n refs.map(r => r.current)\n );\n\n if (\n !isWithinElement &&\n !startedFromWithinElement &&\n (!isException || !isException(event.target))\n ) {\n onClickAway(event);\n }\n },\n [onClickAway, refs, isException]\n );\n\n useEffect(() => {\n document.addEventListener('mousedown', trackAction);\n document.addEventListener('touchstart', trackAction);\n document.addEventListener(DOMMouseEvent, eventHandler);\n document.addEventListener(DOMTouchEvent, eventHandler);\n return () => {\n document.removeEventListener('mousedown', trackAction);\n document.removeEventListener('touchstart', trackAction);\n document.removeEventListener(DOMMouseEvent, eventHandler);\n document.removeEventListener(DOMTouchEvent, eventHandler);\n };\n }, [DOMTouchEvent, DOMMouseEvent, eventHandler, trackAction]);\n\n return React.cloneElement(children, {\n ...children.props,\n ref: newRef,\n });\n }\n);\n"],"names":["eventMap","touchMap","isEventWithinElement","event","node","activated","refs","isWithinElement","ref","ClickAwayListener","React","children","mouseEvent","touchEvent","onClickAway","isException","nodeRef","useRef","startedActionWithinElementRef","DOMMouseEvent","DOMTouchEvent","newRef","useForkRef","activatedRef","trackAction","useCallback","r","eventHandler","startedFromWithinElement","useEffect"],"mappings":";;AAWA,MAAMA,IAAW;AAAA,EACf,SAAS;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AACb,GACMC,IAAW;AAAA,EACf,cAAc;AAAA,EACd,YAAY;AACd;AAEO,SAASC,EACdC,GACAC,GACAC,GACAC,GACA;AACA,MAAI,CAACD;AACH,WAAO;AAGT,MAAIE;AAEJ,SAAIJ,EAAM,eACRI,IACE,CAACH,GAAM,GAAGE,CAAI,EAAE,KAAK,CAACE,MACbL,EAAM,aAAA,EAAe,QAAQK,CAAG,IAAI,EAC5C,MAAM,SAETD,IACE,CAAC,SAAS,gBAAgB,SAASJ,EAAM,MAAa,KACtD,CAACC,GAAM,GAAGE,CAAI,EAAE,KAAK,CAACE,MACbA,GAAK,SAASL,EAAM,MAAM,CAClC,MAAM,QAGJI;AACT;AAEO,MAAME,IAAoBC,EAAM;AAAA,EACrC,SACE,EAAE,UAAAC,GAAU,YAAAC,GAAY,YAAAC,GAAY,aAAAC,GAAa,MAAAR,IAAO,CAAA,GAAI,aAAAS,EAAA,GAC5DP,GACA;AACA,UAAMQ,IAAUC,EAA2B,IAAI,GACzCC,IAAgCD,EAAgB,EAAI,GACpDE,IAAgBnB,EAASY,KAAc,SAAS,GAChDQ,IAAgBnB,EAASY,KAAc,YAAY,GACnDQ,IAASC,EAAWd,GAAKQ,GAAUL,EAAiB,GAAG,GACvDY,IAAeb,EAAM,OAAO,EAAK;AAEvCA,IAAAA,EAAM,UAAU,OAGd,OAAO,WAAW,MAAM;AACtB,MAAAa,EAAa,UAAU;AAAA,IACzB,GAAG,CAAC,GACG,MAAM;AACX,MAAAA,EAAa,UAAU;AAAA,IACzB,IACC,CAAA,CAAE;AAEL,UAAMC,IAAcC;AAAA,MAClB,CAACtB,MAAe;AACd,QAAAe,EAA8B,UAAUhB;AAAA,UACtCC;AAAA,UACAa,EAAQ;AAAA,UACRO,EAAa;AAAA,UACbjB,EAAK,IAAI,CAAAoB,MAAKA,EAAE,OAAO;AAAA,QAAA;AAAA,MAE3B;AAAA,MACA,CAACpB,CAAI;AAAA,IAAA,GAGDqB,IAAeF;AAAA,MACnB,CAACtB,MAAe;AACd,cAAMyB,IAA2BV,EAA8B;AAQ/D,QACE,CARsBhB;AAAA,UACtBC;AAAA,UACAa,EAAQ;AAAA,UACRO,EAAa;AAAA,UACbjB,EAAK,IAAI,CAAAoB,MAAKA,EAAE,OAAO;AAAA,QAAA,KAKvB,CAACE,MACA,CAACb,KAAe,CAACA,EAAYZ,EAAM,MAAM,MAE1CW,EAAYX,CAAK;AAAA,MAErB;AAAA,MACA,CAACW,GAAaR,GAAMS,CAAW;AAAA,IAAA;AAGjC,WAAAc,EAAU,OACR,SAAS,iBAAiB,aAAaL,CAAW,GAClD,SAAS,iBAAiB,cAAcA,CAAW,GACnD,SAAS,iBAAiBL,GAAeQ,CAAY,GACrD,SAAS,iBAAiBP,GAAeO,CAAY,GAC9C,MAAM;AACX,eAAS,oBAAoB,aAAaH,CAAW,GACrD,SAAS,oBAAoB,cAAcA,CAAW,GACtD,SAAS,oBAAoBL,GAAeQ,CAAY,GACxD,SAAS,oBAAoBP,GAAeO,CAAY;AAAA,IAC1D,IACC,CAACP,GAAeD,GAAeQ,GAAcH,CAAW,CAAC,GAErDd,EAAM,aAAaC,GAAU;AAAA,MAClC,GAAGA,EAAS;AAAA,MACZ,KAAKU;AAAA,IAAA,CACN;AAAA,EACH;AACF;"}
@@ -7,19 +7,19 @@ import '../../../draggable.css';const c = "_draggable_db40376", m = { draggable:
7
7
  children: a,
8
8
  draggable: t = !0
9
9
  }) => {
10
- const o = p({}), r = n(
10
+ const o = p({}), e = n(
11
11
  () => ({
12
12
  "--position-x": `${o.position.x}px`,
13
13
  "--position-y": `${o.position.y}px`
14
14
  }),
15
15
  [o.position]
16
- ), e = i.cloneElement(a, {
16
+ ), r = i.cloneElement(a, {
17
17
  className: l("tcn-draggable", m.draggable, a.props.className),
18
- style: { ...r, ...a.props.style },
18
+ style: { ...e, ...a.props.style },
19
19
  "data-is-dragging": o.isDragging,
20
20
  "data-is-draggable": t
21
21
  });
22
- return /* @__PURE__ */ s(g.Provider, { value: o, children: e });
22
+ return /* @__PURE__ */ s(g.Provider, { value: o, children: r });
23
23
  };
24
24
  export {
25
25
  y as Draggable
@@ -2,17 +2,17 @@ import s, { useRef as f, useEffect as u } from "react";
2
2
  import a from "clsx";
3
3
  import { useDragContainer as l } from "./context.js";
4
4
  import { useForkRef as m } from "../hooks/use_fork_ref.js";
5
- const d = ({ children: e }) => {
6
- const { registerHandle: t, unregisterHandle: n } = l(), r = f(null);
5
+ const d = ({ children: r }) => {
6
+ const { registerHandle: t, unregisterHandle: n } = l(), e = f(null);
7
7
  u(() => {
8
- if (r.current != null)
9
- return t(r), () => {
10
- r.current != null && n(r);
8
+ if (e.current != null)
9
+ return t(e), () => {
10
+ e.current != null && n(e);
11
11
  };
12
12
  }, [t, n]);
13
- const o = m(r, e.props.ref);
14
- return s.cloneElement(e, {
15
- className: a("tcn-drag-handle", e.props.className),
13
+ const o = m(e, r.props.ref);
14
+ return s.cloneElement(r, {
15
+ className: a("tcn-drag-handle", r.props.className),
16
16
  ref: o
17
17
  });
18
18
  };
@@ -1,7 +1,7 @@
1
- import { jsx as i } from "react/jsx-runtime";
2
- import e from "react";
3
- const d = e.forwardRef(function({ onRedirect: t }, o) {
4
- return /* @__PURE__ */ i(
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import i from "react";
3
+ const n = i.forwardRef(function({ onRedirect: t }, o) {
4
+ return /* @__PURE__ */ e(
5
5
  "div",
6
6
  {
7
7
  ref: o,
@@ -19,6 +19,6 @@ const d = e.forwardRef(function({ onRedirect: t }, o) {
19
19
  );
20
20
  });
21
21
  export {
22
- d as FocusRedirect
22
+ n as FocusRedirect
23
23
  };
24
24
  //# sourceMappingURL=focus_redirect.js.map
@@ -1,9 +1,9 @@
1
1
  import r from "react";
2
- const i = (e, t) => () => {
3
- const o = r.useContext(e);
4
- if (o === void 0)
2
+ const i = (o, t) => () => {
3
+ const e = r.useContext(o);
4
+ if (e === void 0)
5
5
  throw t ? new Error(`Context ${t} was accessed outside of a context provider!`) : new Error("Context must be used within a Context Provider!");
6
- return o;
6
+ return e;
7
7
  };
8
8
  export {
9
9
  i as makeContextHook
@@ -1,5 +1,5 @@
1
1
  import s from "react";
2
- function h(t) {
2
+ function d(t) {
3
3
  const [c, a] = s.useState(!1);
4
4
  return s.useEffect(() => {
5
5
  const e = window.matchMedia(t);
@@ -11,6 +11,6 @@ function h(t) {
11
11
  }, [t]), c;
12
12
  }
13
13
  export {
14
- h as useMediaQuery
14
+ d as useMediaQuery
15
15
  };
16
16
  //# sourceMappingURL=use_media_query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use_media_query.js","sources":["../../../src/utils/hooks/use_media_query.ts"],"sourcesContent":["import React from 'react';\n\n/**\n * Custom hook that returns a boolean indicating if the current viewport\n * matches the given media query.\n *\n * @param query - The media query to match against (e.g. \"(min-width: 768px)\")\n * @returns boolean indicating if the media query matches\n */\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = React.useState(false);\n\n React.useEffect(() => {\n const mediaQuery = window.matchMedia(query);\n\n // Set initial value\n setMatches(mediaQuery.matches);\n\n // Create event listener\n const handler = (event: MediaQueryListEvent) => {\n setMatches(event.matches);\n };\n\n // Add the listener\n mediaQuery.addEventListener('change', handler);\n\n // Clean up\n return () => mediaQuery.removeEventListener('change', handler);\n }, [query]);\n\n return matches;\n}\n"],"names":["useMediaQuery","query","matches","setMatches","React","mediaQuery","handler","event"],"mappings":";AASO,SAASA,EAAcC,GAAwB;AACpD,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAM,SAAS,EAAK;AAElD,SAAAA,EAAM,UAAU,MAAM;AACpB,UAAMC,IAAa,OAAO,WAAWJ,CAAK;AAG1C,IAAAE,EAAWE,EAAW,OAAO;AAG7B,UAAMC,IAAU,CAACC,MAA+B;AAC9C,MAAAJ,EAAWI,EAAM,OAAO;AAAA,IAC1B;AAGA,WAAAF,EAAW,iBAAiB,UAAUC,CAAO,GAGtC,MAAMD,EAAW,oBAAoB,UAAUC,CAAO;AAAA,EAC/D,GAAG,CAACL,CAAK,CAAC,GAEHC;AACT;"}
1
+ {"version":3,"file":"use_media_query.js","sources":["../../../src/utils/hooks/use_media_query.ts"],"sourcesContent":["import React from 'react';\n\n/**\n * Custom hook that returns a boolean indicating if the current viewport\n * matches the given media query.\n *\n * @param query - The media query to match against (e.g. \"(min-width: 768px)\")\n * @returns boolean indicating if the media query matches\n */\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = React.useState(false);\n\n React.useEffect(() => {\n const mediaQuery = window.matchMedia(query);\n\n // Set initial value\n setMatches(mediaQuery.matches);\n\n // Create event listener\n const handler = (event: MediaQueryListEvent) => {\n setMatches(event.matches);\n };\n\n // Add the listener\n mediaQuery.addEventListener('change', handler);\n\n // Clean up\n return () => mediaQuery.removeEventListener('change', handler);\n }, [query]);\n\n return matches;\n}\n"],"names":["useMediaQuery","query","matches","setMatches","React","mediaQuery","handler","event"],"mappings":";AASO,SAASA,EAAcC,GAAwB;AACpD,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAM,SAAS,EAAK;AAElDA,SAAAA,EAAM,UAAU,MAAM;AACpB,UAAMC,IAAa,OAAO,WAAWJ,CAAK;AAG1C,IAAAE,EAAWE,EAAW,OAAO;AAG7B,UAAMC,IAAU,CAACC,MAA+B;AAC9C,MAAAJ,EAAWI,EAAM,OAAO;AAAA,IAC1B;AAGA,WAAAF,EAAW,iBAAiB,UAAUC,CAAO,GAGtC,MAAMD,EAAW,oBAAoB,UAAUC,CAAO;AAAA,EAC/D,GAAG,CAACL,CAAK,CAAC,GAEHC;AACT;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tcn/ui",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "type": "module",
5
5
  "description": "",
6
6
  "author": "TCN",
@@ -0,0 +1,131 @@
1
+ import { Canvas, Meta, Markdown } from '@storybook/addon-docs/blocks';
2
+ import * as ActionStories from './actions.stories';
3
+ import { Showcase, Section } from './components/showcase';
4
+ import { Gallery } from './components/gallery';
5
+
6
+ <Meta title="Catalog/Actions" of={ActionStories} />
7
+
8
+ # Actions
9
+
10
+ Interactive elements that trigger operations or set configuration for application tooling.
11
+
12
+ ## Button
13
+
14
+ Relaxed, text based actions for high level page decisions (Cancel, Save, etc.)
15
+
16
+ <Gallery minColumnWidth="350px">
17
+
18
+ <Showcase
19
+ title="Hierarchy"
20
+ description="Visually indicates the importance of an action and its relationship to other actions. A primary action should be limited to one per surface."
21
+ of={ActionStories.HierarchyShowcase}
22
+ width="380px"
23
+ />
24
+
25
+ <Showcase
26
+ title="Size"
27
+ description="Used to customize the size of actions in relation to one another on a surface. Use sparingly, do not use as a replacement for hierarchy."
28
+ of={ActionStories.SizeShowcase}
29
+ width="320px"
30
+ />
31
+
32
+ <Showcase
33
+ title="Disabled"
34
+ description="Prevents interaction and reduces visual prominence."
35
+ of={ActionStories.DisabledShowcase}
36
+ width="420px"
37
+ />
38
+
39
+ <Showcase
40
+ title="With Icons"
41
+ description="Icons can be added to buttons with the use of Icon and Spacer components."
42
+ of={ActionStories.IconShowcase}
43
+ width="300px"
44
+ />
45
+
46
+ <Showcase
47
+ title="Severity"
48
+ description="Visual indication of the severity of consequential, one-time actions."
49
+ of={ActionStories.SeverityShowcase}
50
+ width="300px"
51
+ >
52
+ <Markdown>
53
+ {`
54
+ **🚧 This concept is being actively developed.**
55
+
56
+ Severity gives users a clear, visual indication of the impact and importance of an action.
57
+
58
+ Should be the primary exception of color variance in actions and generally replacing the need for using custom colors.
59
+
60
+ Use sparingly for consequential, one-time actions such as:
61
+
62
+ - Deleting an entity permanently - **dangerous**
63
+ - Discarding the UIs current state or unsaved changes when leaving the page - **cautious**
64
+ - Prompting a user to pick a preferred option out of multiple otherwise valid options - **suggested**
65
+ - Client confirmation for important migration - **encouraged**
66
+ `}
67
+ </Markdown>
68
+ </Showcase>
69
+
70
+ <Showcase
71
+ title="Custom Colors"
72
+ description="
73
+ Override accent color for heavily brand or product specific actions.
74
+ Use sparingly, should be avoided to create cohesion and consistency between UIs."
75
+ of={ActionStories.ColorShowcase}
76
+ width="420px"
77
+ />
78
+
79
+ <Showcase
80
+ title="Full Width"
81
+ description="Fill container width for mobile or prominent CTAs."
82
+ of={ActionStories.FullWidth}
83
+ width="340px"
84
+ />
85
+
86
+ </Gallery>
87
+
88
+
89
+
90
+ ## Utility
91
+
92
+ Compact, icon-based actions. Used as re-usable tooling for item rows, utility bars, or supplemental behavior on elements (Close Panel, Copy Entity, ect)
93
+
94
+ <Gallery>
95
+
96
+ <Showcase
97
+ title="Hierarchy"
98
+ description="Visually indicates the importance of an action and its relationship to other actions. A primary action should be limited to one per surface."
99
+ of={ActionStories.SlimButtonHierarchy}
100
+ width="240px"
101
+ />
102
+
103
+ <Showcase
104
+ title="Size"
105
+ description="Used to customize the size of actions in relation to one another on a surface. Use sparingly, do not use as a replacement for hierarchy."
106
+ of={ActionStories.SlimButtonSizes}
107
+ width="220px"
108
+ />
109
+
110
+ <Showcase
111
+ title="Disabled"
112
+ description="Prevents interaction and reduces visual prominence."
113
+ of={ActionStories.SlimButtonDisabled}
114
+ width="240px"
115
+ />
116
+
117
+ <Showcase
118
+ title="Severity"
119
+ description="Visual indication of the severity of consequential, one-time actions."
120
+ of={ActionStories.SlimButtonSeverity}
121
+ width="140px"
122
+ />
123
+
124
+ <Showcase
125
+ title="Custom Colors"
126
+ description="Override accent color for heavily brand or product specific actions. Use sparingly, should be avoided to create cohesion and consistency between UIs."
127
+ of={ActionStories.SlimButtonColors}
128
+ width="140px"
129
+ />
130
+
131
+ </Gallery>