@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.
- package/dist/Color-ASIRERSW-B4GaVKuQ.js +990 -0
- package/dist/Color-ASIRERSW-B4GaVKuQ.js.map +1 -0
- package/dist/WithTooltip-IO6J4KBT-B1oq93K5.js +1485 -0
- package/dist/WithTooltip-IO6J4KBT-B1oq93K5.js.map +1 -0
- package/dist/actions/__docs__/components/gallery.d.ts +8 -0
- package/dist/actions/__docs__/components/gallery.d.ts.map +1 -0
- package/dist/actions/__docs__/components/gallery.js +20 -0
- package/dist/actions/__docs__/components/gallery.js.map +1 -0
- package/dist/actions/__docs__/components/showcase.d.ts +27 -0
- package/dist/actions/__docs__/components/showcase.d.ts.map +1 -0
- package/dist/actions/__docs__/components/showcase.js +15 -0
- package/dist/actions/__docs__/components/showcase.js.map +1 -0
- package/dist/actions/button/base_button/base_button.d.ts +2 -0
- package/dist/actions/button/base_button/base_button.d.ts.map +1 -1
- package/dist/actions/button/base_button/base_button.js +18 -16
- package/dist/actions/button/base_button/base_button.js.map +1 -1
- package/dist/actions/button/button/button.js +6 -6
- package/dist/actions/button/button_group/button_group.js +1 -1
- package/dist/actions/button/select_group/select_group.js +13 -13
- package/dist/actions/button/select_group/single_select_group.js +6 -6
- package/dist/actions/button/slim_button/slim_button.js +2 -2
- package/dist/actions/types.d.ts +2 -0
- package/dist/actions/types.d.ts.map +1 -0
- package/dist/actions/types.js +2 -0
- package/dist/actions/types.js.map +1 -0
- package/dist/feedback/loading/loading.js +12 -12
- package/dist/feedback/loading/loading.js.map +1 -1
- package/dist/feedback/progress/progress_bar.js +1 -1
- package/dist/form/field/common/field_control/field_control.js +8 -8
- package/dist/form/field/common/status_input/status_input.js +6 -6
- package/dist/form/field/field.js +5 -5
- package/dist/form/field/h_field/h_field.js +11 -11
- package/dist/form/field/v_field/v_field.js +10 -10
- package/dist/form/field_set/field_set.js +3 -3
- package/dist/formatter-QJ4M4OGQ-DaIl2Wi_.js +6 -0
- package/dist/formatter-QJ4M4OGQ-DaIl2Wi_.js.map +1 -0
- package/dist/gallery.css +1 -0
- package/dist/inputs/checkbox/checkbox.js +11 -11
- package/dist/inputs/color_input/color_picker.js +5 -5
- package/dist/inputs/combo_box/combo_box.js +16 -16
- package/dist/inputs/date_picker/date_picker.js +18 -18
- package/dist/inputs/date_picker/date_picker_body.js +2 -2
- package/dist/inputs/date_picker/date_picker_input.js +18 -18
- package/dist/inputs/input/input.js +5 -5
- package/dist/inputs/mask_input/key_capture_input.js +7 -7
- package/dist/inputs/mask_input/mask_input.js +4 -4
- package/dist/inputs/multi_combo_box/multi_combo_box.js +17 -17
- package/dist/inputs/multiselect/multiselect.js +13 -13
- package/dist/inputs/multiselect/multiselect_row.js +8 -8
- package/dist/inputs/phone_number_input/phone_number_input.js +11 -11
- package/dist/inputs/radio/radio.js +10 -10
- package/dist/inputs/radio/radio_row.js +3 -3
- package/dist/inputs/select/select.js +14 -14
- package/dist/inputs/slider/slider.js +10 -10
- package/dist/inputs/switch/switch.js +4 -4
- package/dist/inputs/textarea/textarea.js +7 -7
- package/dist/inputs/unit_input/unit_input.js +4 -4
- package/dist/layouts/body/h_body.js +7 -7
- package/dist/layouts/body/v_body.js +6 -6
- package/dist/layouts/column/column.js +17 -17
- package/dist/layouts/footer/footer.js +7 -7
- package/dist/layouts/grid/grid.js +24 -24
- package/dist/layouts/header/header.js +2 -2
- package/dist/layouts/list/item.js +2 -2
- package/dist/layouts/list/list.js +7 -7
- package/dist/layouts/list/section_header.js +6 -6
- package/dist/layouts/scaffold/scaffold.js +16 -16
- package/dist/layouts/sidebar_end/sidebar_end.js +14 -14
- package/dist/layouts/sidebar_start/sidebar_start.js +10 -10
- package/dist/layouts/utility_bar/utility_bar.js +10 -10
- package/dist/overlay/frame/frame.js +4 -4
- package/dist/overlay/menu/menu.js +34 -34
- package/dist/overlay/portal/portal_platform_context.js +4 -4
- package/dist/showcase-WfP6kBEb.js +58401 -0
- package/dist/showcase-WfP6kBEb.js.map +1 -0
- package/dist/showcase.css +1 -0
- package/dist/stacks/box/box.js +23 -23
- package/dist/stacks/h_collapsible_box.js +2 -2
- package/dist/stacks/h_stack.js +41 -41
- package/dist/stacks/spacer.js +11 -11
- package/dist/stacks/story_components/circle.js +10 -10
- package/dist/stacks/story_components/picture_placeholder.js +9 -9
- package/dist/stacks/story_components/rect.js +7 -7
- package/dist/stacks/story_components/style_box.js +4 -4
- package/dist/stacks/utils/use_is_collapsed.js +6 -6
- package/dist/stacks/v_collapsible_box.js +2 -2
- package/dist/stacks/v_stack.js +42 -42
- package/dist/stacks/z_stack.js +39 -39
- package/dist/surfaces/alert/alert.js +4 -4
- package/dist/surfaces/card/card.js +4 -4
- package/dist/surfaces/confirm/confirm.js +9 -9
- package/dist/surfaces/drawers/drawer_start/drawer_start.js +2 -2
- package/dist/surfaces/drawers/drawer_top/drawer_top.js +2 -2
- package/dist/surfaces/modal/modal.js +5 -5
- package/dist/surfaces/page/h_page.js +7 -7
- package/dist/surfaces/page/v_page.js +5 -5
- package/dist/surfaces/panel/h_panel.js +14 -14
- package/dist/surfaces/panel/v_panel.js +9 -9
- package/dist/surfaces/pop_confirm/pop_confirm.js +6 -6
- package/dist/surfaces/popconfirm/pop_confirm.js +8 -8
- package/dist/surfaces/tooltip/tooltip.js +8 -8
- package/dist/surfaces/window/window.js +9 -9
- package/dist/syntaxhighlighter-IQDEPFLK-BX_eF8__.js +3777 -0
- package/dist/syntaxhighlighter-IQDEPFLK-BX_eF8__.js.map +1 -0
- package/dist/themes/themes/ergo/ergo_theme.js +33 -1
- package/dist/themes/themes/ergo/ergo_theme.js.map +1 -1
- package/dist/tokens/badge/badge.js +9 -9
- package/dist/tokens/bubble/bubble.js +8 -8
- package/dist/tokens/chip/chip.js +3 -3
- package/dist/utils/click_away_listener.js +10 -10
- package/dist/utils/click_away_listener.js.map +1 -1
- package/dist/utils/dnd/draggable/draggable.js +4 -4
- package/dist/utils/dnd/handle.js +8 -8
- package/dist/utils/focus_redirect.js +5 -5
- package/dist/utils/hooks/make_context_hook.js +4 -4
- package/dist/utils/hooks/use_media_query.js +2 -2
- package/dist/utils/hooks/use_media_query.js.map +1 -1
- package/package.json +1 -1
- package/src/actions/__docs__/actions.mdx +131 -0
- package/src/actions/__docs__/actions.stories.tsx +309 -0
- package/src/actions/__docs__/components/gallery.module.css +6 -0
- package/src/actions/__docs__/components/gallery.tsx +28 -0
- package/src/actions/__docs__/components/showcase.module.css +55 -0
- package/src/actions/__docs__/components/showcase.tsx +121 -0
- package/src/actions/button/base_button/base_button.tsx +5 -1
- package/src/actions/types.ts +6 -0
- 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
|
|
2
|
+
import u from "react";
|
|
3
3
|
import { clsx as o } from "clsx";
|
|
4
|
-
import { Spacer as
|
|
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 },
|
|
8
|
+
import '../../badge.css';const s = "_badge-bubble_7fe9ed5", f = { "badge-bubble": s }, S = u.forwardRef(
|
|
9
9
|
({
|
|
10
|
-
value:
|
|
11
|
-
children:
|
|
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:
|
|
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:
|
|
38
|
+
children: a
|
|
39
39
|
}
|
|
40
40
|
),
|
|
41
|
-
/* @__PURE__ */ e(
|
|
41
|
+
/* @__PURE__ */ e(h, { height: "100%" })
|
|
42
42
|
] })
|
|
43
43
|
]
|
|
44
44
|
}
|
|
45
45
|
)
|
|
46
46
|
);
|
|
47
47
|
export {
|
|
48
|
-
|
|
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
|
|
7
|
-
import '../../bubble.css';const
|
|
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:
|
|
13
|
-
size:
|
|
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":
|
|
18
|
+
"--bubble-text-color": l,
|
|
19
19
|
"--bubble-color": b,
|
|
20
20
|
...o
|
|
21
21
|
};
|
|
22
22
|
return /* @__PURE__ */ m(
|
|
23
|
-
|
|
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":
|
|
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
|
-
|
|
42
|
+
B as Bubble
|
|
43
43
|
};
|
|
44
44
|
//# sourceMappingURL=bubble.js.map
|
package/dist/tokens/chip/chip.js
CHANGED
|
@@ -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
|
|
5
|
+
import { theme as l } from "../../themes/theme_variables.js";
|
|
6
6
|
import "../../themes/stylesheets/reset.js";
|
|
7
|
-
import '../../chip.css';const
|
|
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
|
-
|
|
28
|
+
w as Chip
|
|
29
29
|
};
|
|
30
30
|
//# sourceMappingURL=chip.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
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,
|
|
12
|
-
if (!
|
|
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 =
|
|
18
|
-
function({ children: t, mouseEvent:
|
|
19
|
-
const f = p(null), v = p(!0),
|
|
20
|
-
|
|
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(
|
|
48
|
-
document.removeEventListener("mousedown", r), document.removeEventListener("touchstart", r), document.removeEventListener(
|
|
49
|
-
}), [
|
|
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;
|
|
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({}),
|
|
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
|
-
),
|
|
16
|
+
), r = i.cloneElement(a, {
|
|
17
17
|
className: l("tcn-draggable", m.draggable, a.props.className),
|
|
18
|
-
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:
|
|
22
|
+
return /* @__PURE__ */ s(g.Provider, { value: o, children: r });
|
|
23
23
|
};
|
|
24
24
|
export {
|
|
25
25
|
y as Draggable
|
package/dist/utils/dnd/handle.js
CHANGED
|
@@ -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:
|
|
6
|
-
const { registerHandle: t, unregisterHandle: n } = l(),
|
|
5
|
+
const d = ({ children: r }) => {
|
|
6
|
+
const { registerHandle: t, unregisterHandle: n } = l(), e = f(null);
|
|
7
7
|
u(() => {
|
|
8
|
-
if (
|
|
9
|
-
return t(
|
|
10
|
-
|
|
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(
|
|
14
|
-
return s.cloneElement(
|
|
15
|
-
className: a("tcn-drag-handle",
|
|
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
|
|
2
|
-
import
|
|
3
|
-
const
|
|
4
|
-
return /* @__PURE__ */
|
|
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
|
-
|
|
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 = (
|
|
3
|
-
const
|
|
4
|
-
if (
|
|
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
|
|
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
|
|
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
|
-
|
|
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;
|
|
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
|
@@ -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>
|