@tcn/ui 0.1.1 → 0.2.0

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 (107) hide show
  1. package/README.md +38 -3
  2. package/dist/draggable.css +1 -0
  3. package/dist/feedback/progress/progress_bar.js +1 -1
  4. package/dist/form/field/common/field_description.js +1 -1
  5. package/dist/form/field/common/field_error.js +1 -1
  6. package/dist/form/field/common/field_label.js +1 -1
  7. package/dist/inputs/date_picker/date_picker_date.js +1 -1
  8. package/dist/inputs/date_picker/date_picker_day.js +1 -1
  9. package/dist/inputs/date_picker/date_picker_time_selector.js +1 -1
  10. package/dist/inputs/date_picker/date_picker_year_selector.js +1 -1
  11. package/dist/inputs/phone_number_input/phone_number_input.d.ts +2 -0
  12. package/dist/inputs/phone_number_input/phone_number_input.d.ts.map +1 -1
  13. package/dist/inputs/phone_number_input/phone_number_input.js +159 -153
  14. package/dist/inputs/phone_number_input/phone_number_input.js.map +1 -1
  15. package/dist/inputs/suggestions/suggestion_list.js +1 -1
  16. package/dist/inputs/textarea/textarea.d.ts +2 -2
  17. package/dist/inputs/textarea/textarea.d.ts.map +1 -1
  18. package/dist/inputs/textarea/textarea.js.map +1 -1
  19. package/dist/layouts/header/header.d.ts.map +1 -1
  20. package/dist/layouts/header/header.js.map +1 -1
  21. package/dist/overlay/frame/frame.d.ts +11 -0
  22. package/dist/overlay/frame/frame.d.ts.map +1 -0
  23. package/dist/overlay/frame/frame.js +18 -0
  24. package/dist/overlay/frame/frame.js.map +1 -0
  25. package/dist/overlay/index.d.ts +1 -0
  26. package/dist/overlay/index.d.ts.map +1 -1
  27. package/dist/overlay/index.js +4 -2
  28. package/dist/overlay/index.js.map +1 -1
  29. package/dist/stacks/box/box.d.ts +1 -1
  30. package/dist/stacks/box/box.d.ts.map +1 -1
  31. package/dist/stacks/box/box.js.map +1 -1
  32. package/dist/surfaces/index.d.ts +2 -2
  33. package/dist/surfaces/index.d.ts.map +1 -1
  34. package/dist/surfaces/index.js +22 -22
  35. package/dist/surfaces/modal/modal.d.ts +3 -2
  36. package/dist/surfaces/modal/modal.d.ts.map +1 -1
  37. package/dist/surfaces/modal/modal.js +14 -13
  38. package/dist/surfaces/modal/modal.js.map +1 -1
  39. package/dist/surfaces/window/window.d.ts +3 -2
  40. package/dist/surfaces/window/window.d.ts.map +1 -1
  41. package/dist/surfaces/window/window.js +17 -7
  42. package/dist/surfaces/window/window.js.map +1 -1
  43. package/dist/themes/themes/ergo/ergo_theme.js +69 -0
  44. package/dist/themes/themes/ergo/ergo_theme.js.map +1 -1
  45. package/dist/typography/title/title.d.ts +2 -1
  46. package/dist/typography/title/title.d.ts.map +1 -1
  47. package/dist/typography/title/title.js +23 -22
  48. package/dist/typography/title/title.js.map +1 -1
  49. package/dist/utils/dnd/context.d.ts +4 -0
  50. package/dist/utils/dnd/context.d.ts.map +1 -0
  51. package/dist/utils/dnd/context.js +20 -0
  52. package/dist/utils/dnd/context.js.map +1 -0
  53. package/dist/utils/dnd/draggable/draggable.d.ts +7 -0
  54. package/dist/utils/dnd/draggable/draggable.d.ts.map +1 -0
  55. package/dist/utils/dnd/draggable/draggable.js +27 -0
  56. package/dist/utils/dnd/draggable/draggable.js.map +1 -0
  57. package/dist/utils/dnd/handle.d.ts +6 -0
  58. package/dist/utils/dnd/handle.d.ts.map +1 -0
  59. package/dist/utils/dnd/handle.js +22 -0
  60. package/dist/utils/dnd/handle.js.map +1 -0
  61. package/dist/utils/dnd/hooks/use_drag_container.d.ts +7 -0
  62. package/dist/utils/dnd/hooks/use_drag_container.d.ts.map +1 -0
  63. package/dist/utils/dnd/hooks/use_drag_container.js +30 -0
  64. package/dist/utils/dnd/hooks/use_drag_container.js.map +1 -0
  65. package/dist/utils/{hooks → dnd/hooks}/use_draggable.d.ts +3 -3
  66. package/dist/utils/dnd/hooks/use_draggable.d.ts.map +1 -0
  67. package/dist/utils/dnd/hooks/use_draggable.js +41 -0
  68. package/dist/utils/dnd/hooks/use_draggable.js.map +1 -0
  69. package/dist/utils/dnd/types.d.ts +10 -0
  70. package/dist/utils/dnd/types.d.ts.map +1 -0
  71. package/dist/utils/dnd/types.js +2 -0
  72. package/dist/utils/dnd/types.js.map +1 -0
  73. package/dist/utils/index.d.ts +1 -1
  74. package/dist/utils/index.d.ts.map +1 -1
  75. package/dist/utils/index.js +1 -1
  76. package/package.json +9 -3
  77. package/src/inputs/phone_number_input/phone_number_input.tsx +8 -0
  78. package/src/inputs/textarea/textarea.tsx +2 -2
  79. package/src/layouts/header/header.tsx +0 -1
  80. package/src/overlay/frame/frame.stories.tsx +40 -0
  81. package/src/overlay/frame/frame.tsx +34 -0
  82. package/src/overlay/frame/frame_stories.module.css +14 -0
  83. package/src/overlay/index.ts +1 -0
  84. package/src/stacks/box/box.tsx +8 -2
  85. package/src/surfaces/index.ts +2 -2
  86. package/src/surfaces/modal/__stories__/modal.stories.tsx +19 -27
  87. package/src/surfaces/modal/modal.tsx +13 -10
  88. package/src/surfaces/window/window.stories.tsx +37 -4
  89. package/src/surfaces/window/window.tsx +14 -6
  90. package/src/themes/themes/ergo/ergo_theme.css +69 -0
  91. package/src/typography/title/title.tsx +22 -18
  92. package/src/utils/dnd/__stories__/draggable.stories.tsx +48 -0
  93. package/src/utils/dnd/__stories__/draggable_stories.module.css +21 -0
  94. package/src/utils/{__stories__ → dnd/__stories__}/use_draggable.stories.tsx +15 -10
  95. package/src/utils/dnd/context.ts +24 -0
  96. package/src/utils/dnd/draggable/draggable.module.css +8 -0
  97. package/src/utils/dnd/draggable/draggable.tsx +42 -0
  98. package/src/utils/dnd/handle.tsx +32 -0
  99. package/src/utils/dnd/hooks/use_drag_container.ts +42 -0
  100. package/src/utils/{hooks → dnd/hooks}/use_draggable.ts +23 -17
  101. package/src/utils/dnd/types.ts +6 -0
  102. package/src/utils/index.ts +1 -1
  103. package/dist/title.module-B16de2jd.js +0 -5
  104. package/dist/title.module-B16de2jd.js.map +0 -1
  105. package/dist/utils/hooks/use_draggable.d.ts.map +0 -1
  106. package/dist/utils/hooks/use_draggable.js +0 -30
  107. package/dist/utils/hooks/use_draggable.js.map +0 -1
@@ -445,6 +445,16 @@ legend {
445
445
  }
446
446
 
447
447
  /* ===== SURFACES ===== */
448
+ .tcn-draggable[data-is-draggable="true"] {
449
+ .tcn-drag-handle {
450
+ cursor: move;
451
+ }
452
+ }
453
+
454
+ .tcn-frame[data-is-veil="true"] {
455
+ background-color: rgba(0, 0, 0, 0.5);
456
+ }
457
+
448
458
  .tcn-list {
449
459
  gap: var(--gap-medium);
450
460
  .tcn-item {
@@ -518,6 +528,65 @@ legend {
518
528
  }
519
529
  }
520
530
 
531
+ /* WINDOW: */
532
+ .tcn-window {
533
+ --v-inset: var(--padding-large);
534
+ background-color: var(--background-color-primary);
535
+ border-radius: var(--shape-radius-medium);
536
+ /* TODO: This should be a variable */
537
+ border: 1px solid rgba(170, 170, 170, 1);
538
+ overflow: hidden;
539
+
540
+ :where(.tcn-typography) {
541
+ color: inherit;
542
+ }
543
+
544
+ :where(.tcn-header) {
545
+ --material: var(--material-secondary-dark);
546
+ --on-material: 0, 0%, 100%;
547
+ --action: var(--material-tan);
548
+ --on-action: 0, 0%, 100%;
549
+ background-color: hsl(var(--material));
550
+ color: hsl(var(--on-material));
551
+ min-height: 40px;
552
+ padding: 0 var(--v-inset);
553
+ gap: var(--gap-medium);
554
+
555
+ :where(.tcn-divider) {
556
+ padding: 4px 0;
557
+ :where(.tcn-divider-line) {
558
+ width: 1.5px;
559
+ min-height: 18px;
560
+ height: auto;
561
+ }
562
+ }
563
+ }
564
+
565
+ :where(.tcn-utility-bar) {
566
+ min-height: 32px;
567
+ border-bottom: 1px solid var(--foreground-color-primary);
568
+ padding: 0 var(--v-inset);
569
+
570
+ :where(.tcn-button) {
571
+ padding: 0;
572
+ min-width: 18px;
573
+ min-height: 18px;
574
+ }
575
+ }
576
+
577
+ :where(.tcn-body) {
578
+ padding: 0 var(--v-inset);
579
+ gap: var(--gap-medium);
580
+ }
581
+
582
+ :where(.tcn-footer) {
583
+ gap: var(--gap-medium);
584
+ min-height: 40px;
585
+ border-top: 1px solid var(--foreground-color-primary);
586
+ padding: 0 var(--v-inset);
587
+ }
588
+ }
589
+
521
590
  /* PANEL */
522
591
  .tcn-panel {
523
592
  --v-inset: var(--padding-large);
@@ -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 --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-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 --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 --font-color: #395578;\\n --font-family: \\\"Lato\\\", sans-serif;\\n --font-size: 12px;\\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 --shape-radius-small: 2px;\\n --shape-radius-medium: 4px;\\n --shape-radius-large: 8px;\\n\\n --accent-color: #cd6b2c;\\n\\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/* ===== Materials ===== */\\n\\n/* White on Gray */\\n.material-status-disabled {\\n --action: 0, 0%, 100%;\\n --on-action: 0, 0%, 49.8%;\\n --material: 0, 0%, 49.8%;\\n --on-material: 0, 0%, 100%;\\n}\\n\\n/* White on Vivid Blue */\\n.material-status-info {\\n --action: 0, 0%, 100%;\\n --on-action: 207, 100%, 50%;\\n --material: 207, 100%, 50%;\\n --on-material: 0, 0%, 100%;\\n}\\n\\n/* Navy on Yellow */\\n.material-status-warning {\\n --action: 213, 35.6%, 34.7%;\\n --on-action: 60, 100%, 50%;\\n --material: 60, 100%, 50%;\\n --on-material: 213, 35.6%, 34.7%;\\n}\\n\\n/* White on Red */\\n.material-status-error {\\n --action: 0, 0%, 100%;\\n --on-action: 0, 100%, 50%;\\n --material: 0, 100%, 50%;\\n --on-material: 0, 0%, 100%;\\n}\\n\\n/* Navy on Light Grey */\\n.material-async-initial {\\n --action: 213, 35.6%, 34.7%;\\n --on-action: 0, 0%, 75.3%;\\n --material: 0, 0%, 75.3%;\\n --on-material: 213, 35.6%, 34.7%;\\n}\\n\\n/* White on Loading Blue */\\n.material-async-pending {\\n --action: 0, 0%, 100%;\\n --on-action: 207, 100%, 50%;\\n --material: 207, 100%, 50%;\\n --on-material: 0, 0%, 100%;\\n}\\n\\n/* White on Vivid Green */\\n.material-async-success {\\n --action: 0, 0%, 100%;\\n --on-action: 120, 100%, 50%;\\n --material: 120, 100%, 50%;\\n --on-material: 0, 0%, 100%;\\n}\\n\\n/* White on Red */\\n.material-async-failed {\\n --action: 0, 0%, 100%;\\n --on-action: 0, 100%, 50%;\\n --material: 0, 100%, 50%;\\n --on-material: 0, 0%, 100%;\\n}\\n\\n.material {\\n background-color: hsl(var(--material));\\n color: hsl(var(--on-material));\\n}\\n\\n/* ===== SURFACES ===== */\\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.tcn-veil {\\n background-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n/* TODO: FIX Borders on modal header and footer -- when there are multiple header/footers */\\n/* MODAL: */\\n.tcn-modal {\\n --v-inset: var(--padding-large);\\n background-color: var(--background-color-primary);\\n border-radius: var(--shape-radius-medium);\\n /* TODO: This should be a variable */\\n border: 1px solid rgba(170, 170, 170, 1);\\n overflow: hidden;\\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 min-height: 40px;\\n padding: 0 var(--v-inset);\\n gap: var(--gap-medium);\\n\\n :where(.tcn-divider) {\\n padding: 4px 0;\\n :where(.tcn-divider-line) {\\n width: 1.5px;\\n min-height: 18px;\\n height: auto;\\n }\\n }\\n }\\n\\n :where(.tcn-utility-bar) {\\n min-height: 32px;\\n border-bottom: 1px solid var(--foreground-color-primary);\\n padding: 0 var(--v-inset);\\n\\n :where(.tcn-button) {\\n padding: 0;\\n min-width: 18px;\\n min-height: 18px;\\n }\\n }\\n\\n :where(.tcn-body) {\\n padding: 0 var(--v-inset);\\n gap: var(--gap-medium);\\n }\\n\\n :where(.tcn-footer) {\\n gap: var(--gap-medium);\\n min-height: 40px;\\n border-top: 1px solid var(--foreground-color-primary);\\n padding: 0 var(--v-inset);\\n }\\n}\\n\\n/* PANEL */\\n.tcn-panel {\\n --v-inset: var(--padding-large);\\n background-color: var(--background-color-primary);\\n border-radius: var(--shape-radius-medium);\\n overflow: hidden;\\n\\n :where(.tcn-header) {\\n min-height: 40px;\\n padding: 0 var(--v-inset);\\n gap: var(--gap-medium);\\n\\n :where(.tcn-title) {\\n font-weight: 700;\\n }\\n\\n :where(.tcn-divider) {\\n padding: 4px 0;\\n :where(.tcn-divider-line) {\\n width: 1.5px;\\n min-height: 18px;\\n height: auto;\\n }\\n }\\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: 1px solid var(--foreground-color-primary);\\n }\\n\\n /* Border appears on footer only when it follows body */\\n :where(.tcn-body) + :where(.tcn-footer) {\\n border-top: 1px solid var(--foreground-color-primary);\\n }\\n\\n :where(.tcn-utility-bar) {\\n min-height: 32px;\\n padding: 0 var(--v-inset);\\n }\\n\\n :where(.tcn-body) {\\n padding: 0 var(--v-inset);\\n gap: var(--gap-medium);\\n }\\n\\n :where(.tcn-footer) {\\n gap: var(--gap-medium);\\n min-height: 40px;\\n padding: 0 var(--v-inset);\\n }\\n}\\n\\n/* Card */\\n.tcn-card {\\n padding: 0;\\n gap: 0px;\\n border: 1px solid var(--foreground-color-primary);\\n border-radius: var(--shape-radius-medium);\\n overflow: hidden;\\n :where(.tcn-header) {\\n /* TODO: Color header */\\n min-height: 32px;\\n }\\n :where(.tcn-body) {\\n padding: var(--padding-medium) var(--v-inset);\\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,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 --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-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 --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 --font-color: #395578;\\n --font-family: \\\"Lato\\\", sans-serif;\\n --font-size: 12px;\\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 --shape-radius-small: 2px;\\n --shape-radius-medium: 4px;\\n --shape-radius-large: 8px;\\n\\n --accent-color: #cd6b2c;\\n\\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/* ===== Materials ===== */\\n\\n/* White on Gray */\\n.material-status-disabled {\\n --action: 0, 0%, 100%;\\n --on-action: 0, 0%, 49.8%;\\n --material: 0, 0%, 49.8%;\\n --on-material: 0, 0%, 100%;\\n}\\n\\n/* White on Vivid Blue */\\n.material-status-info {\\n --action: 0, 0%, 100%;\\n --on-action: 207, 100%, 50%;\\n --material: 207, 100%, 50%;\\n --on-material: 0, 0%, 100%;\\n}\\n\\n/* Navy on Yellow */\\n.material-status-warning {\\n --action: 213, 35.6%, 34.7%;\\n --on-action: 60, 100%, 50%;\\n --material: 60, 100%, 50%;\\n --on-material: 213, 35.6%, 34.7%;\\n}\\n\\n/* White on Red */\\n.material-status-error {\\n --action: 0, 0%, 100%;\\n --on-action: 0, 100%, 50%;\\n --material: 0, 100%, 50%;\\n --on-material: 0, 0%, 100%;\\n}\\n\\n/* Navy on Light Grey */\\n.material-async-initial {\\n --action: 213, 35.6%, 34.7%;\\n --on-action: 0, 0%, 75.3%;\\n --material: 0, 0%, 75.3%;\\n --on-material: 213, 35.6%, 34.7%;\\n}\\n\\n/* White on Loading Blue */\\n.material-async-pending {\\n --action: 0, 0%, 100%;\\n --on-action: 207, 100%, 50%;\\n --material: 207, 100%, 50%;\\n --on-material: 0, 0%, 100%;\\n}\\n\\n/* White on Vivid Green */\\n.material-async-success {\\n --action: 0, 0%, 100%;\\n --on-action: 120, 100%, 50%;\\n --material: 120, 100%, 50%;\\n --on-material: 0, 0%, 100%;\\n}\\n\\n/* White on Red */\\n.material-async-failed {\\n --action: 0, 0%, 100%;\\n --on-action: 0, 100%, 50%;\\n --material: 0, 100%, 50%;\\n --on-material: 0, 0%, 100%;\\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-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.tcn-veil {\\n background-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n/* TODO: FIX Borders on modal header and footer -- when there are multiple header/footers */\\n/* MODAL: */\\n.tcn-modal {\\n --v-inset: var(--padding-large);\\n background-color: var(--background-color-primary);\\n border-radius: var(--shape-radius-medium);\\n /* TODO: This should be a variable */\\n border: 1px solid rgba(170, 170, 170, 1);\\n overflow: hidden;\\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 min-height: 40px;\\n padding: 0 var(--v-inset);\\n gap: var(--gap-medium);\\n\\n :where(.tcn-divider) {\\n padding: 4px 0;\\n :where(.tcn-divider-line) {\\n width: 1.5px;\\n min-height: 18px;\\n height: auto;\\n }\\n }\\n }\\n\\n :where(.tcn-utility-bar) {\\n min-height: 32px;\\n border-bottom: 1px solid var(--foreground-color-primary);\\n padding: 0 var(--v-inset);\\n\\n :where(.tcn-button) {\\n padding: 0;\\n min-width: 18px;\\n min-height: 18px;\\n }\\n }\\n\\n :where(.tcn-body) {\\n padding: 0 var(--v-inset);\\n gap: var(--gap-medium);\\n }\\n\\n :where(.tcn-footer) {\\n gap: var(--gap-medium);\\n min-height: 40px;\\n border-top: 1px solid var(--foreground-color-primary);\\n padding: 0 var(--v-inset);\\n }\\n}\\n\\n/* WINDOW: */\\n.tcn-window {\\n --v-inset: var(--padding-large);\\n background-color: var(--background-color-primary);\\n border-radius: var(--shape-radius-medium);\\n /* TODO: This should be a variable */\\n border: 1px solid rgba(170, 170, 170, 1);\\n overflow: hidden;\\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 min-height: 40px;\\n padding: 0 var(--v-inset);\\n gap: var(--gap-medium);\\n\\n :where(.tcn-divider) {\\n padding: 4px 0;\\n :where(.tcn-divider-line) {\\n width: 1.5px;\\n min-height: 18px;\\n height: auto;\\n }\\n }\\n }\\n\\n :where(.tcn-utility-bar) {\\n min-height: 32px;\\n border-bottom: 1px solid var(--foreground-color-primary);\\n padding: 0 var(--v-inset);\\n\\n :where(.tcn-button) {\\n padding: 0;\\n min-width: 18px;\\n min-height: 18px;\\n }\\n }\\n\\n :where(.tcn-body) {\\n padding: 0 var(--v-inset);\\n gap: var(--gap-medium);\\n }\\n\\n :where(.tcn-footer) {\\n gap: var(--gap-medium);\\n min-height: 40px;\\n border-top: 1px solid var(--foreground-color-primary);\\n padding: 0 var(--v-inset);\\n }\\n}\\n\\n/* PANEL */\\n.tcn-panel {\\n --v-inset: var(--padding-large);\\n background-color: var(--background-color-primary);\\n border-radius: var(--shape-radius-medium);\\n overflow: hidden;\\n\\n :where(.tcn-header) {\\n min-height: 40px;\\n padding: 0 var(--v-inset);\\n gap: var(--gap-medium);\\n\\n :where(.tcn-title) {\\n font-weight: 700;\\n }\\n\\n :where(.tcn-divider) {\\n padding: 4px 0;\\n :where(.tcn-divider-line) {\\n width: 1.5px;\\n min-height: 18px;\\n height: auto;\\n }\\n }\\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: 1px solid var(--foreground-color-primary);\\n }\\n\\n /* Border appears on footer only when it follows body */\\n :where(.tcn-body) + :where(.tcn-footer) {\\n border-top: 1px solid var(--foreground-color-primary);\\n }\\n\\n :where(.tcn-utility-bar) {\\n min-height: 32px;\\n padding: 0 var(--v-inset);\\n }\\n\\n :where(.tcn-body) {\\n padding: 0 var(--v-inset);\\n gap: var(--gap-medium);\\n }\\n\\n :where(.tcn-footer) {\\n gap: var(--gap-medium);\\n min-height: 40px;\\n padding: 0 var(--v-inset);\\n }\\n}\\n\\n/* Card */\\n.tcn-card {\\n padding: 0;\\n gap: 0px;\\n border: 1px solid var(--foreground-color-primary);\\n border-radius: var(--shape-radius-medium);\\n overflow: hidden;\\n :where(.tcn-header) {\\n /* TODO: Color header */\\n min-height: 32px;\\n }\\n :where(.tcn-body) {\\n padding: var(--padding-medium) var(--v-inset);\\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;AAAA;AAAA;AAAA;AAAA;AAAA;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,3 +1,4 @@
1
+ import { default as React } from 'react';
1
2
  import { WithDetailedHTMLProps } from '../../stacks/types/as.js';
2
3
  import { Emphasis, Hierarchy, Size } from '../../utils/index.js';
3
4
  export interface TitleOwnProps {
@@ -15,5 +16,5 @@ export interface TitleOwnProps {
15
16
  as?: string;
16
17
  }
17
18
  export type TitleProps = WithDetailedHTMLProps<TitleOwnProps, 'h1' | 'h2' | 'h3'>;
18
- export declare function Title({ size, emphasis, hierarchy, color, children, className, style, padStart, padEnd, padBottom, padTop, pad, selectable, as, }: TitleProps): import("react/jsx-runtime").JSX.Element;
19
+ export declare const Title: React.ForwardRefExoticComponent<Omit<TitleProps, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
19
20
  //# sourceMappingURL=title.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"title.d.ts","sourceRoot":"","sources":["../../../src/typography/title/title.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAGtE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,UAAU,GAAG,qBAAqB,CAAC,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAElF,wBAAgB,KAAK,CAAC,EACpB,IAAW,EACX,QAAmB,EACnB,SAAqB,EACrB,KAAK,EACL,QAAQ,EACR,SAAS,EACT,KAAU,EACV,QAAQ,EACR,MAAM,EACN,SAAS,EACT,MAAM,EACN,GAAG,EACH,UAAiB,EACjB,EAAE,GACH,EAAE,UAAU,2CAiDZ"}
1
+ {"version":3,"file":"title.d.ts","sourceRoot":"","sources":["../../../src/typography/title/title.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAGtE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,UAAU,GAAG,qBAAqB,CAAC,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAElF,eAAO,MAAM,KAAK,oGAoEhB,CAAC"}
@@ -1,37 +1,38 @@
1
- import { jsx as s } from "react/jsx-runtime";
2
- import { clsx as u } from "clsx";
3
- import { s as x } from "../../title.module-B16de2jd.js";
4
- function A({
5
- size: a = "md",
6
- emphasis: o = "normal",
7
- hierarchy: p = "primary",
8
- color: n,
9
- children: c,
1
+ import { jsx as u } from "react/jsx-runtime";
2
+ import { forwardRef as x } from "react";
3
+ import { clsx as b } from "clsx";
4
+ import '../../title.css';const I = "_title_64bd0fd", T = { title: I }, N = x(function({
5
+ size: n = "md",
6
+ emphasis: m = "normal",
7
+ hierarchy: c = "primary",
8
+ color: e,
9
+ children: p,
10
10
  className: g,
11
11
  style: i = {},
12
12
  padStart: r,
13
- padEnd: e,
13
+ padEnd: a,
14
14
  padBottom: f,
15
15
  padTop: l,
16
- pad: m,
16
+ pad: d,
17
17
  selectable: h = !0,
18
- as: d
19
- }) {
20
- let t = d;
21
- return d == null && (a === "lg" ? t = "h1" : a === "md" ? t = "h2" : t = "h3"), m && (i.padding = m), r && (i.paddingInlineStart = r), e && (i.paddingInlineEnd = e), l && (i.paddingTop = l), f && (i.paddingBottom = f), n && (i.color = n), /* @__PURE__ */ s(
18
+ as: o
19
+ }, s) {
20
+ let t = o;
21
+ return o == null && (n === "lg" ? t = "h1" : n === "md" ? t = "h2" : t = "h3"), d && (i.padding = d), r && (i.paddingInlineStart = r), a && (i.paddingInlineEnd = a), l && (i.paddingTop = l), f && (i.paddingBottom = f), e && (i.color = e), /* @__PURE__ */ u(
22
22
  t,
23
23
  {
24
- "data-hierarchy": p,
25
- "data-emphasis": o,
24
+ ref: s,
25
+ "data-hierarchy": c,
26
+ "data-emphasis": m,
26
27
  "data-selectable": h,
27
- className: u(x.title, "title", "tcn-typography", "tcn-title", g),
28
+ className: b(T.title, "title", "tcn-typography", "tcn-title", g),
28
29
  style: i,
29
- "data-size": a,
30
- children: c
30
+ "data-size": n,
31
+ children: p
31
32
  }
32
33
  );
33
- }
34
+ });
34
35
  export {
35
- A as Title
36
+ N as Title
36
37
  };
37
38
  //# sourceMappingURL=title.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"title.js","sources":["../../../src/typography/title/title.tsx"],"sourcesContent":["import React from 'react';\nimport { clsx } from 'clsx';\nimport type { WithDetailedHTMLProps } from '../../stacks/types/as.js';\nimport type { Emphasis, Hierarchy, Size } from '../../utils/index.js';\nimport styles from './title.module.css';\n\nexport interface TitleOwnProps {\n children?: string;\n size?: Size;\n emphasis?: Emphasis;\n hierarchy?: Hierarchy;\n color?: string;\n pad?: string;\n padStart?: string;\n padEnd?: string;\n padTop?: string;\n padBottom?: string;\n selectable?: boolean;\n as?: string;\n}\n\nexport type TitleProps = WithDetailedHTMLProps<TitleOwnProps, 'h1' | 'h2' | 'h3'>;\n\nexport function Title({\n size = 'md',\n emphasis = 'normal',\n hierarchy = 'primary',\n color,\n children,\n className,\n style = {},\n padStart,\n padEnd,\n padBottom,\n padTop,\n pad,\n selectable = true,\n as,\n}: TitleProps) {\n let As: React.ElementType = as as React.ElementType;\n\n if (as == null) {\n if (size === 'lg') {\n As = 'h1';\n } else if (size === 'md') {\n As = 'h2';\n } else {\n As = 'h3';\n }\n }\n\n if (pad) {\n style.padding = pad;\n }\n\n if (padStart) {\n style.paddingInlineStart = padStart;\n }\n\n if (padEnd) {\n style.paddingInlineEnd = padEnd;\n }\n\n if (padTop) {\n style.paddingTop = padTop;\n }\n\n if (padBottom) {\n style.paddingBottom = padBottom;\n }\n\n if (color) {\n style.color = color;\n }\n\n return (\n <As\n data-hierarchy={hierarchy}\n data-emphasis={emphasis}\n data-selectable={selectable}\n className={clsx(styles['title'], 'title', 'tcn-typography', 'tcn-title', className)}\n style={style}\n data-size={size}\n >\n {children}\n </As>\n );\n}\n"],"names":["Title","size","emphasis","hierarchy","color","children","className","style","padStart","padEnd","padBottom","padTop","pad","selectable","as","As","jsx","clsx","styles"],"mappings":";;;AAuBO,SAASA,EAAM;AAAA,EACpB,MAAAC,IAAO;AAAA,EACP,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC,IAAQ,CAAA;AAAA,EACR,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,KAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,IAAAC;AACF,GAAe;AACb,MAAIC,IAAwBD;AAE5B,SAAIA,KAAM,SACJb,MAAS,OACXc,IAAK,OACId,MAAS,OAClBc,IAAK,OAELA,IAAK,OAILH,MACFL,EAAM,UAAUK,IAGdJ,MACFD,EAAM,qBAAqBC,IAGzBC,MACFF,EAAM,mBAAmBE,IAGvBE,MACFJ,EAAM,aAAaI,IAGjBD,MACFH,EAAM,gBAAgBG,IAGpBN,MACFG,EAAM,QAAQH,IAId,gBAAAY;AAAA,IAACD;AAAA,IAAA;AAAA,MACC,kBAAgBZ;AAAA,MAChB,iBAAeD;AAAA,MACf,mBAAiBW;AAAA,MACjB,WAAWI,EAAKC,EAAO,OAAU,SAAS,kBAAkB,aAAaZ,CAAS;AAAA,MAClF,OAAAC;AAAA,MACA,aAAWN;AAAA,MAEV,UAAAI;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"title.js","sources":["../../../src/typography/title/title.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { clsx } from 'clsx';\nimport type { WithDetailedHTMLProps } from '../../stacks/types/as.js';\nimport type { Emphasis, Hierarchy, Size } from '../../utils/index.js';\nimport styles from './title.module.css';\n\nexport interface TitleOwnProps {\n children?: string;\n size?: Size;\n emphasis?: Emphasis;\n hierarchy?: Hierarchy;\n color?: string;\n pad?: string;\n padStart?: string;\n padEnd?: string;\n padTop?: string;\n padBottom?: string;\n selectable?: boolean;\n as?: string;\n}\n\nexport type TitleProps = WithDetailedHTMLProps<TitleOwnProps, 'h1' | 'h2' | 'h3'>;\n\nexport const Title = forwardRef<HTMLHeadingElement, TitleProps>(function Title(\n {\n size = 'md',\n emphasis = 'normal',\n hierarchy = 'primary',\n color,\n children,\n className,\n style = {},\n padStart,\n padEnd,\n padBottom,\n padTop,\n pad,\n selectable = true,\n as,\n },\n ref\n) {\n let As: React.ElementType = as as React.ElementType;\n\n if (as == null) {\n if (size === 'lg') {\n As = 'h1';\n } else if (size === 'md') {\n As = 'h2';\n } else {\n As = 'h3';\n }\n }\n\n if (pad) {\n style.padding = pad;\n }\n\n if (padStart) {\n style.paddingInlineStart = padStart;\n }\n\n if (padEnd) {\n style.paddingInlineEnd = padEnd;\n }\n\n if (padTop) {\n style.paddingTop = padTop;\n }\n\n if (padBottom) {\n style.paddingBottom = padBottom;\n }\n\n if (color) {\n style.color = color;\n }\n\n return (\n <As\n ref={ref}\n data-hierarchy={hierarchy}\n data-emphasis={emphasis}\n data-selectable={selectable}\n className={clsx(styles['title'], 'title', 'tcn-typography', 'tcn-title', className)}\n style={style}\n data-size={size}\n >\n {children}\n </As>\n );\n});\n"],"names":["Title","forwardRef","size","emphasis","hierarchy","color","children","className","style","padStart","padEnd","padBottom","padTop","pad","selectable","as","ref","As","jsx","clsx","styles"],"mappings":";;;8CAuBaA,IAAQC,EAA2C,SAC9D;AAAA,EACE,MAAAC,IAAO;AAAA,EACP,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC,IAAQ,CAAA;AAAA,EACR,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,KAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,IAAAC;AACF,GACAC,GACA;AACA,MAAIC,IAAwBF;AAE5B,SAAIA,KAAM,SACJb,MAAS,OACXe,IAAK,OACIf,MAAS,OAClBe,IAAK,OAELA,IAAK,OAILJ,MACFL,EAAM,UAAUK,IAGdJ,MACFD,EAAM,qBAAqBC,IAGzBC,MACFF,EAAM,mBAAmBE,IAGvBE,MACFJ,EAAM,aAAaI,IAGjBD,MACFH,EAAM,gBAAgBG,IAGpBN,MACFG,EAAM,QAAQH,IAId,gBAAAa;AAAA,IAACD;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,kBAAgBZ;AAAA,MAChB,iBAAeD;AAAA,MACf,mBAAiBW;AAAA,MACjB,WAAWK,EAAKC,EAAO,OAAU,SAAS,kBAAkB,aAAab,CAAS;AAAA,MAClF,OAAAC;AAAA,MACA,aAAWN;AAAA,MAEV,UAAAI;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}
@@ -0,0 +1,4 @@
1
+ import { DragContainer } from './types.js';
2
+ export declare const DragContainerContext: import('react').Context<DragContainer>;
3
+ export declare function useDragContainer(): DragContainer;
4
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/utils/dnd/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAShD,eAAO,MAAM,oBAAoB,wCAA6C,CAAC;AAE/E,wBAAgB,gBAAgB,IAAI,aAAa,CAWhD"}
@@ -0,0 +1,20 @@
1
+ import { createContext as t, useContext as r } from "react";
2
+ const n = {
3
+ registerHandle: () => {
4
+ },
5
+ unregisterHandle: () => {
6
+ },
7
+ isDragging: !1,
8
+ position: { x: 0, y: 0 }
9
+ }, o = t(n);
10
+ function i() {
11
+ const e = r(o);
12
+ return e === n && console.warn(
13
+ "useDragContainer: No DragContainerContext found. Handles may will not register or trigger drag events."
14
+ ), e;
15
+ }
16
+ export {
17
+ o as DragContainerContext,
18
+ i as useDragContainer
19
+ };
20
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sources":["../../../src/utils/dnd/context.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { DragContainer } from './types.js';\n\nconst defaultValue: DragContainer = {\n registerHandle: () => {},\n unregisterHandle: () => {},\n isDragging: false,\n position: { x: 0, y: 0 },\n};\n\nexport const DragContainerContext = createContext<DragContainer>(defaultValue);\n\nexport function useDragContainer(): DragContainer {\n const context = useContext(DragContainerContext);\n\n if (context === defaultValue) {\n // biome-ignore lint/suspicious/noConsole: Let devs know if they're not using the context correctly\n console.warn(\n 'useDragContainer: No DragContainerContext found. Handles may will not register or trigger drag events.'\n );\n }\n\n return context;\n}\n"],"names":["defaultValue","DragContainerContext","createContext","useDragContainer","context","useContext"],"mappings":";AAGA,MAAMA,IAA8B;AAAA,EAClC,gBAAgB,MAAM;AAAA,EAAC;AAAA,EACvB,kBAAkB,MAAM;AAAA,EAAC;AAAA,EACzB,YAAY;AAAA,EACZ,UAAU,EAAE,GAAG,GAAG,GAAG,EAAA;AACvB,GAEaC,IAAuBC,EAA6BF,CAAY;AAEtE,SAASG,IAAkC;AAChD,QAAMC,IAAUC,EAAWJ,CAAoB;AAE/C,SAAIG,MAAYJ,KAEd,QAAQ;AAAA,IACN;AAAA,EAAA,GAIGI;AACT;"}
@@ -0,0 +1,7 @@
1
+ import { default as React } from 'react';
2
+ export interface DraggableProps {
3
+ children: React.ReactElement;
4
+ draggable?: boolean;
5
+ }
6
+ export declare const Draggable: React.FC<DraggableProps>;
7
+ //# sourceMappingURL=draggable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draggable.d.ts","sourceRoot":"","sources":["../../../../src/utils/dnd/draggable/draggable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAQ3D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA4B9C,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { jsx as s } from "react/jsx-runtime";
2
+ import i, { useMemo as n } from "react";
3
+ import { DragContainerContext as g } from "../context.js";
4
+ import l from "clsx";
5
+ import { useMakeDragContainer as p } from "../hooks/use_drag_container.js";
6
+ import '../../../draggable.css';const c = "_draggable_db40376", m = { draggable: c }, y = ({
7
+ children: a,
8
+ draggable: t = !0
9
+ }) => {
10
+ const o = p({}), r = n(
11
+ () => ({
12
+ "--position-x": `${o.position.x}px`,
13
+ "--position-y": `${o.position.y}px`
14
+ }),
15
+ [o.position]
16
+ ), e = i.cloneElement(a, {
17
+ className: l("tcn-draggable", m.draggable, a.props.className),
18
+ style: { ...r, ...a.props.style },
19
+ "data-is-dragging": o.isDragging,
20
+ "data-is-draggable": t
21
+ });
22
+ return /* @__PURE__ */ s(g.Provider, { value: o, children: e });
23
+ };
24
+ export {
25
+ y as Draggable
26
+ };
27
+ //# sourceMappingURL=draggable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draggable.js","sources":["../../../../src/utils/dnd/draggable/draggable.tsx"],"sourcesContent":["import React, { useMemo, type CSSProperties } from 'react';\n\nimport { DragContainerContext } from '../context.js';\nimport clsx from 'clsx';\nimport { useMakeDragContainer } from '../hooks/use_drag_container.js';\n\nimport styles from './draggable.module.css';\n\nexport interface DraggableProps {\n children: React.ReactElement;\n draggable?: boolean;\n}\n\nexport const Draggable: React.FC<DraggableProps> = ({\n children,\n draggable: isDraggable = true,\n}) => {\n const context = useMakeDragContainer({});\n\n const cssVariables = useMemo(\n () =>\n ({\n '--position-x': `${context.position.x}px`,\n '--position-y': `${context.position.y}px`,\n }) as CSSProperties,\n\n [context.position]\n );\n\n const clonedChildren = React.cloneElement(children, {\n className: clsx('tcn-draggable', styles.draggable, children.props.className),\n style: { ...cssVariables, ...children.props.style },\n 'data-is-dragging': context.isDragging,\n 'data-is-draggable': isDraggable,\n });\n\n return (\n <DragContainerContext.Provider value={context}>\n {clonedChildren}\n </DragContainerContext.Provider>\n );\n};\n"],"names":["Draggable","children","isDraggable","context","useMakeDragContainer","cssVariables","useMemo","clonedChildren","React","clsx","styles","DragContainerContext"],"mappings":";;;;;sDAaaA,IAAsC,CAAC;AAAA,EAClD,UAAAC;AAAA,EACA,WAAWC,IAAc;AAC3B,MAAM;AACJ,QAAMC,IAAUC,EAAqB,EAAE,GAEjCC,IAAeC;AAAA,IACnB,OACG;AAAA,MACC,gBAAgB,GAAGH,EAAQ,SAAS,CAAC;AAAA,MACrC,gBAAgB,GAAGA,EAAQ,SAAS,CAAC;AAAA,IAAA;AAAA,IAGzC,CAACA,EAAQ,QAAQ;AAAA,EAAA,GAGbI,IAAiBC,EAAM,aAAaP,GAAU;AAAA,IAClD,WAAWQ,EAAK,iBAAiBC,EAAO,WAAWT,EAAS,MAAM,SAAS;AAAA,IAC3E,OAAO,EAAE,GAAGI,GAAc,GAAGJ,EAAS,MAAM,MAAA;AAAA,IAC5C,oBAAoBE,EAAQ;AAAA,IAC5B,qBAAqBD;AAAA,EAAA,CACtB;AAED,2BACGS,EAAqB,UAArB,EAA8B,OAAOR,GACnC,UAAAI,GACH;AAEJ;"}
@@ -0,0 +1,6 @@
1
+ import { default as React } from 'react';
2
+ export interface DragHandleProps {
3
+ children: React.ReactElement;
4
+ }
5
+ export declare const DragHandle: React.FC<DragHandleProps>;
6
+ //# sourceMappingURL=handle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../../src/utils/dnd/handle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAKjD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;CAC9B;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAsBhD,CAAC"}
@@ -0,0 +1,22 @@
1
+ import s, { useRef as f, useEffect as u } from "react";
2
+ import a from "clsx";
3
+ import { useDragContainer as l } from "./context.js";
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);
7
+ u(() => {
8
+ if (r.current != null)
9
+ return t(r), () => {
10
+ r.current != null && n(r);
11
+ };
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),
16
+ ref: o
17
+ });
18
+ };
19
+ export {
20
+ d as DragHandle
21
+ };
22
+ //# sourceMappingURL=handle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle.js","sources":["../../../src/utils/dnd/handle.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport clsx from 'clsx';\nimport { useDragContainer } from './context.js';\nimport { useForkRef } from '../hooks/use_fork_ref.js';\n\nexport interface DragHandleProps {\n children: React.ReactElement;\n}\n\nexport const DragHandle: React.FC<DragHandleProps> = ({ children }) => {\n const { registerHandle, unregisterHandle } = useDragContainer();\n const ref = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (ref.current == null) {\n return;\n }\n registerHandle(ref);\n return () => {\n if (ref.current == null) {\n return;\n }\n unregisterHandle(ref);\n };\n }, [registerHandle, unregisterHandle]);\n\n const mergedRef = useForkRef(ref, children.props.ref);\n return React.cloneElement(children, {\n className: clsx('tcn-drag-handle', children.props.className),\n ref: mergedRef,\n });\n};\n"],"names":["DragHandle","children","registerHandle","unregisterHandle","useDragContainer","ref","useRef","useEffect","mergedRef","useForkRef","React","clsx"],"mappings":";;;;AASO,MAAMA,IAAwC,CAAC,EAAE,UAAAC,QAAe;AACrE,QAAM,EAAE,gBAAAC,GAAgB,kBAAAC,EAAA,IAAqBC,EAAA,GACvCC,IAAMC,EAA2B,IAAI;AAE3C,EAAAC,EAAU,MAAM;AACd,QAAIF,EAAI,WAAW;AAGnB,aAAAH,EAAeG,CAAG,GACX,MAAM;AACX,QAAIA,EAAI,WAAW,QAGnBF,EAAiBE,CAAG;AAAA,MACtB;AAAA,EACF,GAAG,CAACH,GAAgBC,CAAgB,CAAC;AAErC,QAAMK,IAAYC,EAAWJ,GAAKJ,EAAS,MAAM,GAAG;AACpD,SAAOS,EAAM,aAAaT,GAAU;AAAA,IAClC,WAAWU,EAAK,mBAAmBV,EAAS,MAAM,SAAS;AAAA,IAC3D,KAAKO;AAAA,EAAA,CACN;AACH;"}
@@ -0,0 +1,7 @@
1
+ import { Position } from '../../index.js';
2
+ import { DragContainer } from '../types.js';
3
+ export interface UseDragContainerOptions {
4
+ initialPosition?: Position;
5
+ }
6
+ export declare function useMakeDragContainer(options: UseDragContainerOptions): DragContainer;
7
+ //# sourceMappingURL=use_drag_container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_drag_container.d.ts","sourceRoot":"","sources":["../../../../src/utils/dnd/hooks/use_drag_container.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,uBAAuB;IACtC,eAAe,CAAC,EAAE,QAAQ,CAAC;CAC5B;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa,CAgCpF"}
@@ -0,0 +1,30 @@
1
+ import { useState as n, useRef as b, useCallback as o } from "react";
2
+ import { useDraggable as k } from "./use_draggable.js";
3
+ function m(l) {
4
+ const [c, a] = n([]), r = b(l.initialPosition ?? { x: 0, y: 0 }), [s, g] = n(r.current), [u, i] = n(!1);
5
+ k({
6
+ handles: c,
7
+ startDragCallback: () => {
8
+ i(!0);
9
+ },
10
+ dragCallback: (e, t) => {
11
+ g({
12
+ x: r.current.x + e,
13
+ y: r.current.y + t
14
+ });
15
+ },
16
+ endDragCallback: () => {
17
+ i(!1), r.current = s;
18
+ }
19
+ });
20
+ const f = o((e) => {
21
+ a((t) => [...t, e]);
22
+ }, []), d = o((e) => {
23
+ a((t) => t.filter((D) => D !== e));
24
+ }, []);
25
+ return { registerHandle: f, unregisterHandle: d, position: s, isDragging: u };
26
+ }
27
+ export {
28
+ m as useMakeDragContainer
29
+ };
30
+ //# sourceMappingURL=use_drag_container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_drag_container.js","sources":["../../../../src/utils/dnd/hooks/use_drag_container.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport { useDraggable } from './use_draggable.js';\nimport type { Position } from '../../index.js';\nimport type { DragContainer } from '../types.js';\n\nexport interface UseDragContainerOptions {\n initialPosition?: Position;\n}\n\nexport function useMakeDragContainer(options: UseDragContainerOptions): DragContainer {\n const [handles, setHandles] = useState<React.RefObject<HTMLElement>[]>([]);\n const positionRef = useRef<Position>(options.initialPosition ?? { x: 0, y: 0 });\n const [position, setPosition] = useState(positionRef.current);\n const [isDragging, setIsDragging] = useState(false);\n\n useDraggable({\n handles: handles,\n startDragCallback: () => {\n setIsDragging(true);\n },\n dragCallback: (deltaX, deltaY) => {\n setPosition({\n x: positionRef.current.x + deltaX,\n y: positionRef.current.y + deltaY,\n });\n },\n endDragCallback: () => {\n setIsDragging(false);\n positionRef.current = position;\n },\n });\n\n const registerHandle = useCallback((handle: React.RefObject<HTMLElement>) => {\n setHandles(prev => [...prev, handle]);\n }, []);\n\n const unregisterHandle = useCallback((handle: React.RefObject<HTMLElement>) => {\n setHandles(prev => prev.filter(h => h !== handle));\n }, []);\n\n return { registerHandle, unregisterHandle, position, isDragging };\n}\n"],"names":["useMakeDragContainer","options","handles","setHandles","useState","positionRef","useRef","position","setPosition","isDragging","setIsDragging","useDraggable","deltaX","deltaY","registerHandle","useCallback","handle","prev","unregisterHandle","h"],"mappings":";;AASO,SAASA,EAAqBC,GAAiD;AACpF,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAyC,CAAA,CAAE,GACnEC,IAAcC,EAAiBL,EAAQ,mBAAmB,EAAE,GAAG,GAAG,GAAG,GAAG,GACxE,CAACM,GAAUC,CAAW,IAAIJ,EAASC,EAAY,OAAO,GACtD,CAACI,GAAYC,CAAa,IAAIN,EAAS,EAAK;AAElD,EAAAO,EAAa;AAAA,IACX,SAAAT;AAAA,IACA,mBAAmB,MAAM;AACvB,MAAAQ,EAAc,EAAI;AAAA,IACpB;AAAA,IACA,cAAc,CAACE,GAAQC,MAAW;AAChC,MAAAL,EAAY;AAAA,QACV,GAAGH,EAAY,QAAQ,IAAIO;AAAA,QAC3B,GAAGP,EAAY,QAAQ,IAAIQ;AAAA,MAAA,CAC5B;AAAA,IACH;AAAA,IACA,iBAAiB,MAAM;AACrB,MAAAH,EAAc,EAAK,GACnBL,EAAY,UAAUE;AAAA,IACxB;AAAA,EAAA,CACD;AAED,QAAMO,IAAiBC,EAAY,CAACC,MAAyC;AAC3E,IAAAb,EAAW,CAAAc,MAAQ,CAAC,GAAGA,GAAMD,CAAM,CAAC;AAAA,EACtC,GAAG,CAAA,CAAE,GAECE,IAAmBH,EAAY,CAACC,MAAyC;AAC7E,IAAAb,EAAW,OAAQc,EAAK,OAAO,CAAAE,MAAKA,MAAMH,CAAM,CAAC;AAAA,EACnD,GAAG,CAAA,CAAE;AAEL,SAAO,EAAE,gBAAAF,GAAgB,kBAAAI,GAAkB,UAAAX,GAAU,YAAAE,EAAA;AACvD;"}
@@ -1,8 +1,8 @@
1
- interface DraggableOptions {
1
+ export interface UseDraggableOptions {
2
2
  startDragCallback: (startX: number, startY: number) => void;
3
3
  dragCallback: (deltaX: number, deltaY: number, startX: number, startY: number) => void;
4
4
  endDragCallback: (deltaX: number, deltaY: number, startX: number, startY: number) => void;
5
+ handles?: React.RefObject<HTMLElement>[] | React.RefObject<HTMLElement>;
5
6
  }
6
- export declare function useDraggable(options: DraggableOptions): import('react').MutableRefObject<HTMLElement | null>;
7
- export {};
7
+ export declare function useDraggable(options: UseDraggableOptions): void;
8
8
  //# sourceMappingURL=use_draggable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_draggable.d.ts","sourceRoot":"","sources":["../../../../src/utils/dnd/hooks/use_draggable.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvF,eAAe,EAAE,CACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,KACX,IAAI,CAAC;IACV,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;CACzE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,QAiExD"}
@@ -0,0 +1,41 @@
1
+ import { useRef as s, useEffect as f } from "react";
2
+ function g(t) {
3
+ const m = s(t.startDragCallback);
4
+ m.current = t.startDragCallback;
5
+ const i = s(t.dragCallback);
6
+ i.current = t.dragCallback;
7
+ const v = s(t.endDragCallback);
8
+ v.current = t.endDragCallback, f(() => {
9
+ const r = t.handles;
10
+ if (r === void 0) return;
11
+ let n = 0, a = 0;
12
+ function d(e) {
13
+ const l = e.clientX - n, u = e.clientY - a;
14
+ i.current(l, u, n, a);
15
+ }
16
+ function o(e) {
17
+ const l = e.clientX !== void 0 ? e.clientX - n : 0, u = e.clientY !== void 0 ? e.clientY - a : 0;
18
+ v.current(l, u, n, a), document.body.removeEventListener("mousemove", d), document.body.removeEventListener("mouseup", o), document.body.removeEventListener("mouseleave", o);
19
+ }
20
+ function c(e) {
21
+ n = e.clientX, a = e.clientY, m.current(n, a), document.body.addEventListener("mousemove", d), document.body.addEventListener("mouseup", o), document.body.addEventListener("mouseleave", o);
22
+ }
23
+ if (Array.isArray(r))
24
+ for (const e of r)
25
+ e?.current?.addEventListener("mousedown", c);
26
+ else
27
+ r?.current?.addEventListener("mousedown", c);
28
+ return () => {
29
+ if (Array.isArray(r))
30
+ for (const e of r)
31
+ e?.current?.removeEventListener("mousedown", c);
32
+ else
33
+ r?.current?.removeEventListener("mousedown", c);
34
+ document.body.removeEventListener("mousemove", d), document.body.removeEventListener("mouseup", o), document.body.removeEventListener("mouseleave", o);
35
+ };
36
+ }, [t.handles]);
37
+ }
38
+ export {
39
+ g as useDraggable
40
+ };
41
+ //# sourceMappingURL=use_draggable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_draggable.js","sources":["../../../../src/utils/dnd/hooks/use_draggable.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport interface UseDraggableOptions {\n startDragCallback: (startX: number, startY: number) => void;\n dragCallback: (deltaX: number, deltaY: number, startX: number, startY: number) => void;\n endDragCallback: (\n deltaX: number,\n deltaY: number,\n startX: number,\n startY: number\n ) => void;\n handles?: React.RefObject<HTMLElement>[] | React.RefObject<HTMLElement>;\n}\n\nexport function useDraggable(options: UseDraggableOptions) {\n const startDragCallbackRef = useRef(options.startDragCallback);\n startDragCallbackRef.current = options.startDragCallback;\n const dragCallbackRef = useRef(options.dragCallback);\n dragCallbackRef.current = options.dragCallback;\n const endDragCallbackRef = useRef(options.endDragCallback);\n endDragCallbackRef.current = options.endDragCallback;\n\n useEffect(() => {\n const handles = options.handles;\n if (handles === undefined) return;\n let startX = 0;\n let startY = 0;\n\n function drag(event: MouseEvent) {\n const deltaX = event.clientX - startX;\n const deltaY = event.clientY - startY;\n\n dragCallbackRef.current(deltaX, deltaY, startX, startY);\n }\n\n function endDrag(event: MouseEvent) {\n const deltaX = event.clientX !== undefined ? event.clientX - startX : 0;\n const deltaY = event.clientY !== undefined ? event.clientY - startY : 0;\n endDragCallbackRef.current(deltaX, deltaY, startX, startY);\n document.body.removeEventListener('mousemove', drag);\n document.body.removeEventListener('mouseup', endDrag);\n document.body.removeEventListener('mouseleave', endDrag);\n }\n\n function startDrag(event: MouseEvent) {\n startX = event.clientX;\n startY = event.clientY;\n\n startDragCallbackRef.current(startX, startY);\n\n document.body.addEventListener('mousemove', drag);\n document.body.addEventListener('mouseup', endDrag);\n document.body.addEventListener('mouseleave', endDrag);\n }\n\n if (Array.isArray(handles)) {\n for (const element of handles) {\n if (element != null) {\n element.current?.addEventListener('mousedown', startDrag);\n }\n }\n } else {\n handles?.current?.addEventListener('mousedown', startDrag);\n }\n return () => {\n if (Array.isArray(handles)) {\n for (const element of handles) {\n if (element != null) {\n element.current?.removeEventListener('mousedown', startDrag);\n }\n }\n } else {\n handles?.current?.removeEventListener('mousedown', startDrag);\n }\n document.body.removeEventListener('mousemove', drag);\n document.body.removeEventListener('mouseup', endDrag);\n document.body.removeEventListener('mouseleave', endDrag);\n };\n }, [options.handles]);\n}\n"],"names":["useDraggable","options","startDragCallbackRef","useRef","dragCallbackRef","endDragCallbackRef","useEffect","handles","startX","startY","drag","event","deltaX","deltaY","endDrag","startDrag","element"],"mappings":";AAcO,SAASA,EAAaC,GAA8B;AACzD,QAAMC,IAAuBC,EAAOF,EAAQ,iBAAiB;AAC7D,EAAAC,EAAqB,UAAUD,EAAQ;AACvC,QAAMG,IAAkBD,EAAOF,EAAQ,YAAY;AACnD,EAAAG,EAAgB,UAAUH,EAAQ;AAClC,QAAMI,IAAqBF,EAAOF,EAAQ,eAAe;AACzD,EAAAI,EAAmB,UAAUJ,EAAQ,iBAErCK,EAAU,MAAM;AACd,UAAMC,IAAUN,EAAQ;AACxB,QAAIM,MAAY,OAAW;AAC3B,QAAIC,IAAS,GACTC,IAAS;AAEb,aAASC,EAAKC,GAAmB;AAC/B,YAAMC,IAASD,EAAM,UAAUH,GACzBK,IAASF,EAAM,UAAUF;AAE/B,MAAAL,EAAgB,QAAQQ,GAAQC,GAAQL,GAAQC,CAAM;AAAA,IACxD;AAEA,aAASK,EAAQH,GAAmB;AAClC,YAAMC,IAASD,EAAM,YAAY,SAAYA,EAAM,UAAUH,IAAS,GAChEK,IAASF,EAAM,YAAY,SAAYA,EAAM,UAAUF,IAAS;AACtE,MAAAJ,EAAmB,QAAQO,GAAQC,GAAQL,GAAQC,CAAM,GACzD,SAAS,KAAK,oBAAoB,aAAaC,CAAI,GACnD,SAAS,KAAK,oBAAoB,WAAWI,CAAO,GACpD,SAAS,KAAK,oBAAoB,cAAcA,CAAO;AAAA,IACzD;AAEA,aAASC,EAAUJ,GAAmB;AACpC,MAAAH,IAASG,EAAM,SACfF,IAASE,EAAM,SAEfT,EAAqB,QAAQM,GAAQC,CAAM,GAE3C,SAAS,KAAK,iBAAiB,aAAaC,CAAI,GAChD,SAAS,KAAK,iBAAiB,WAAWI,CAAO,GACjD,SAAS,KAAK,iBAAiB,cAAcA,CAAO;AAAA,IACtD;AAEA,QAAI,MAAM,QAAQP,CAAO;AACvB,iBAAWS,KAAWT;AACpB,QACES,GAAQ,SAAS,iBAAiB,aAAaD,CAAS;AAAA;AAI5D,MAAAR,GAAS,SAAS,iBAAiB,aAAaQ,CAAS;AAE3D,WAAO,MAAM;AACX,UAAI,MAAM,QAAQR,CAAO;AACvB,mBAAWS,KAAWT;AACpB,UACES,GAAQ,SAAS,oBAAoB,aAAaD,CAAS;AAAA;AAI/D,QAAAR,GAAS,SAAS,oBAAoB,aAAaQ,CAAS;AAE9D,eAAS,KAAK,oBAAoB,aAAaL,CAAI,GACnD,SAAS,KAAK,oBAAoB,WAAWI,CAAO,GACpD,SAAS,KAAK,oBAAoB,cAAcA,CAAO;AAAA,IACzD;AAAA,EACF,GAAG,CAACb,EAAQ,OAAO,CAAC;AACtB;"}
@@ -0,0 +1,10 @@
1
+ export interface DragContainer {
2
+ registerHandle: (handle: React.RefObject<HTMLElement>) => void;
3
+ unregisterHandle: (handle: React.RefObject<HTMLElement>) => void;
4
+ isDragging: boolean;
5
+ position: {
6
+ x: number;
7
+ y: number;
8
+ };
9
+ }
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/dnd/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC/D,gBAAgB,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACjE,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -2,7 +2,7 @@ export * from './focus_redirect.js';
2
2
  export * from './click_away_listener.js';
3
3
  export * from './scroll_away_listener.js';
4
4
  export * from './hooks/make_context_hook.js';
5
- export * from './hooks/use_draggable.js';
5
+ export * from './dnd/hooks/use_draggable.js';
6
6
  export * from './hooks/use_fork_ref.js';
7
7
  export * from './hooks/use_media_query.js';
8
8
  export * from './hooks/use_resize_observer.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAE/C,cAAc,oBAAoB,CAAC;AAEnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wCAAwC,CAAC;AACvD,cAAc,qBAAqB,CAAC;AACpC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAE/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAE/C,cAAc,oBAAoB,CAAC;AAEnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wCAAwC,CAAC;AACvD,cAAc,qBAAqB,CAAC;AACpC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAE/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
@@ -2,7 +2,7 @@ import { FocusRedirect as o } from "./focus_redirect.js";
2
2
  import { ClickAwayListener as f } from "./click_away_listener.js";
3
3
  import { ScrollAwayListener as m } from "./scroll_away_listener.js";
4
4
  import { makeContextHook as p } from "./hooks/make_context_hook.js";
5
- import { useDraggable as i } from "./hooks/use_draggable.js";
5
+ import { useDraggable as i } from "./dnd/hooks/use_draggable.js";
6
6
  import { useForkRef as u } from "./hooks/use_fork_ref.js";
7
7
  import { useMediaQuery as l } from "./hooks/use_media_query.js";
8
8
  import { TriggerConfig as c, useResizeObserver as d } from "./hooks/use_resize_observer.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tcn/ui",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "description": "",
6
6
  "author": "TCN",
@@ -41,6 +41,12 @@
41
41
  "import": "./dist/actions/index.js",
42
42
  "default": "./dist/actions/index.js"
43
43
  },
44
+ "./dnd": {
45
+ "@bc-monorepo/source": "./src/dnd/index.ts",
46
+ "types": "./dist/dnd/index.d.ts",
47
+ "import": "./dist/dnd/index.js",
48
+ "default": "./dist/dnd/index.js"
49
+ },
44
50
  "./feedback": {
45
51
  "@bc-monorepo/source": "./src/feedback/index.ts",
46
52
  "types": "./dist/feedback/index.d.ts",
@@ -128,8 +134,8 @@
128
134
  "dependencies": {
129
135
  "clsx": "^2.1.1",
130
136
  "react-color": "^2.19.3",
131
- "@tcn/icons": "2.1.1",
132
- "@tcn/state": "1.0.1"
137
+ "@tcn/state": "1.0.1",
138
+ "@tcn/icons": "2.1.1"
133
139
  },
134
140
  "scripts": {
135
141
  "build": "vite build",