lostcoords-ui 0.4.1 → 0.6.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 (117) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +364 -96
  3. data/app/assets/tailwind/lostcoords/ui/avatar.css +6 -6
  4. data/app/assets/tailwind/lostcoords/ui/base.css +45 -0
  5. data/app/assets/tailwind/lostcoords/ui/card.css +23 -22
  6. data/app/assets/tailwind/lostcoords/ui/choice.css +39 -0
  7. data/app/assets/tailwind/lostcoords/ui/code-block.css +10 -0
  8. data/app/assets/tailwind/lostcoords/ui/{disclosure.css → collapsible.css} +6 -6
  9. data/app/assets/tailwind/lostcoords/ui/components/code-block.css +5 -0
  10. data/app/assets/tailwind/lostcoords/ui/components/collapsible.css +5 -0
  11. data/app/assets/tailwind/lostcoords/ui/components/dialog.css +9 -0
  12. data/app/assets/tailwind/lostcoords/ui/components/emoji-picker.css +5 -0
  13. data/app/assets/tailwind/lostcoords/ui/components/menu.css +5 -0
  14. data/app/assets/tailwind/lostcoords/ui/components/prose.css +3 -0
  15. data/app/assets/tailwind/lostcoords/ui/components/table.css +3 -0
  16. data/app/assets/tailwind/lostcoords/ui/components/toast.css +5 -0
  17. data/app/assets/tailwind/lostcoords/ui/components/tooltip.css +4 -0
  18. data/app/assets/tailwind/lostcoords/ui/components.css +12 -0
  19. data/app/assets/tailwind/lostcoords/ui/copy-button.css +9 -9
  20. data/app/assets/tailwind/lostcoords/ui/core.css +21 -0
  21. data/app/assets/tailwind/lostcoords/ui/dialog.css +17 -17
  22. data/app/assets/tailwind/lostcoords/ui/emoji-picker.css +86 -88
  23. data/app/assets/tailwind/lostcoords/ui/field.css +2 -2
  24. data/app/assets/tailwind/lostcoords/ui/glass.css +9 -8
  25. data/app/assets/tailwind/lostcoords/ui/layout.css +2 -2
  26. data/app/assets/tailwind/lostcoords/ui/popover.css +14 -14
  27. data/app/assets/tailwind/lostcoords/ui/prose.css +66 -0
  28. data/app/assets/tailwind/lostcoords/ui/sheet.css +62 -63
  29. data/app/assets/tailwind/lostcoords/ui/squircle.css +7 -27
  30. data/app/assets/tailwind/lostcoords/ui/table.css +51 -0
  31. data/app/assets/tailwind/lostcoords/ui/theme.css +209 -225
  32. data/app/assets/tailwind/lostcoords/ui/toast.css +23 -0
  33. data/app/assets/tailwind/lostcoords/ui/tooltip.css +51 -0
  34. data/app/assets/tailwind/lostcoords/ui/typography.css +31 -61
  35. data/app/assets/tailwind/lostcoords/ui/ui.css +2 -21
  36. data/app/assets/tailwind/lostcoords/ui/utilities.css +14 -22
  37. data/app/helpers/lostcoords/ui/badge_helper.rb +67 -110
  38. data/app/helpers/lostcoords/ui/button_helper.rb +44 -35
  39. data/app/helpers/lostcoords/ui/card_helper.rb +9 -52
  40. data/app/helpers/lostcoords/ui/choice_helper.rb +87 -0
  41. data/app/helpers/lostcoords/ui/code_block_helper.rb +22 -0
  42. data/app/helpers/lostcoords/ui/collapsible_helper.rb +9 -0
  43. data/app/helpers/lostcoords/ui/copy_button_helper.rb +7 -7
  44. data/app/helpers/lostcoords/ui/description_list_helper.rb +12 -0
  45. data/app/helpers/lostcoords/ui/dialog_helper.rb +15 -17
  46. data/app/helpers/lostcoords/ui/emoji_picker_helper.rb +6 -0
  47. data/app/helpers/lostcoords/ui/feedback_helper.rb +25 -6
  48. data/app/helpers/lostcoords/ui/form_helper.rb +36 -59
  49. data/app/helpers/lostcoords/ui/glass_helper.rb +7 -7
  50. data/app/helpers/lostcoords/ui/layout_helper.rb +13 -11
  51. data/app/helpers/lostcoords/ui/menu_helper.rb +45 -10
  52. data/app/helpers/lostcoords/ui/navigation_helper.rb +144 -0
  53. data/app/helpers/lostcoords/ui/primitives_helper.rb +39 -61
  54. data/app/helpers/lostcoords/ui/reading_helper.rb +2 -2
  55. data/app/helpers/lostcoords/ui/render_attributes_helper.rb +17 -1
  56. data/app/helpers/lostcoords/ui/sheet_helper.rb +7 -45
  57. data/app/helpers/lostcoords/ui/structures_helper.rb +26 -125
  58. data/app/helpers/lostcoords/ui/table_helper.rb +11 -0
  59. data/app/helpers/lostcoords/ui/tailwind_helper.rb +13 -4
  60. data/app/helpers/lostcoords/ui/toast_helper.rb +22 -0
  61. data/app/helpers/lostcoords/ui/tooltip_helper.rb +17 -0
  62. data/app/helpers/lostcoords/ui/typography_helper.rb +41 -11
  63. data/app/javascript/lostcoords/ui/controllers/lc_code_block_controller.js +23 -0
  64. data/app/javascript/lostcoords/ui/controllers/{disclosure_controller.js → lc_collapsible_controller.js} +4 -4
  65. data/app/javascript/lostcoords/ui/controllers/{confirm_dialog_controller.js → lc_confirm_dialog_controller.js} +4 -4
  66. data/app/javascript/lostcoords/ui/controllers/{modal_controller.js → lc_dialog_controller.js} +1 -1
  67. data/app/javascript/lostcoords/ui/controllers/{emoji_picker_controller.js → lc_emoji_picker_controller.js} +38 -10
  68. data/app/javascript/lostcoords/ui/controllers/lc_kbd_controller.js +12 -0
  69. data/app/javascript/lostcoords/ui/controllers/{row_menu_controller.js → lc_menu_controller.js} +25 -3
  70. data/app/javascript/lostcoords/ui/controllers/{ui_popover_controller.js → lc_popover_controller.js} +1 -1
  71. data/app/javascript/lostcoords/ui/controllers/{ui_selection_controller.js → lc_selection_controller.js} +7 -15
  72. data/app/javascript/lostcoords/ui/controllers/{sheet_controller.js → lc_sheet_controller.js} +17 -17
  73. data/app/javascript/lostcoords/ui/controllers/lc_shortcut_controller.js +45 -0
  74. data/app/javascript/lostcoords/ui/controllers/lc_tabs_controller.js +42 -0
  75. data/app/javascript/lostcoords/ui/controllers/{toast_controller.js → lc_toast_controller.js} +2 -2
  76. data/app/javascript/lostcoords/ui/controllers/lc_toast_region_controller.js +62 -0
  77. data/app/javascript/lostcoords/ui/controllers/lc_tooltip_controller.js +54 -0
  78. data/app/javascript/lostcoords/ui/helpers/catalog_picker.js +77 -25
  79. data/app/javascript/lostcoords/ui/helpers/context_dialog.js +6 -6
  80. data/app/javascript/lostcoords/ui/helpers/dialog.js +2 -2
  81. data/app/javascript/lostcoords/ui/helpers/dismiss_stack.js +30 -7
  82. data/app/javascript/lostcoords/ui/helpers/floating_panel.js +7 -8
  83. data/app/javascript/lostcoords/ui/helpers/menu_keys.js +19 -18
  84. data/app/javascript/lostcoords/ui/helpers/roving_focus.js +175 -0
  85. data/app/javascript/lostcoords/ui/helpers/sheet_motion.js +4 -4
  86. data/app/javascript/lostcoords/ui/helpers/shortcuts.js +162 -0
  87. data/app/javascript/lostcoords/ui/helpers/top_layer.js +48 -10
  88. data/app/javascript/lostcoords/ui/index.js +57 -0
  89. data/app/views/lostcoords/ui/components/_emoji_picker.html.erb +46 -46
  90. data/app/views/lostcoords/ui/components/_emoji_picker_grid.html.erb +3 -3
  91. data/app/views/lostcoords/ui/components/_lc_code_block.html.erb +18 -0
  92. data/app/views/lostcoords/ui/components/_lc_collapsible.html.erb +5 -0
  93. data/app/views/lostcoords/ui/components/_lc_dialog.html.erb +11 -8
  94. data/app/views/lostcoords/ui/components/_lc_floating_panel.html.erb +8 -0
  95. data/config/importmap.rb +10 -2
  96. data/config/locales/en.yml +23 -0
  97. data/config/locales/es.yml +23 -0
  98. data/config/locales/ja.yml +23 -0
  99. data/lib/lostcoords/ui/action_view.rb +6 -3
  100. data/lib/lostcoords/ui/builders.rb +2 -2
  101. data/lib/lostcoords/ui/form_builder.rb +126 -0
  102. data/lib/lostcoords/ui/parts.rb +154 -0
  103. data/lib/lostcoords/ui/stylesheets.rb +25 -0
  104. data/lib/lostcoords/ui/tokens.rb +24 -1
  105. data/lib/lostcoords/ui/version.rb +1 -1
  106. data/lib/tasks/lostcoords_ui.rake +11 -0
  107. metadata +54 -21
  108. data/app/assets/tailwind/lostcoords/ui/reading.css +0 -60
  109. data/app/views/lostcoords/ui/components/_form_alert.html.erb +0 -4
  110. data/app/views/lostcoords/ui/components/_lc_disclosure.html.erb +0 -5
  111. data/app/views/lostcoords/ui/components/_skeleton.html.erb +0 -4
  112. data/app/views/lostcoords/ui/components/_spinner.html.erb +0 -10
  113. data/app/views/lostcoords/ui/components/_ui_floating_panel.html.erb +0 -8
  114. data/config/helper_renames.json +0 -113
  115. data/script/migrate_helpers.rb +0 -136
  116. /data/app/javascript/lostcoords/ui/controllers/{ui_copy_controller.js → lc_copy_controller.js} +0 -0
  117. /data/app/javascript/lostcoords/ui/controllers/{ui_toggle_controller.js → lc_toggle_controller.js} +0 -0
@@ -0,0 +1,45 @@
1
+ /* Document defaults for apps that let the library own the page. components.css
2
+ omits this file, so a host with its own base styles keeps them. */
3
+ @layer base {
4
+ :root { color-scheme: light; }
5
+ html[data-theme="dark"] { color-scheme: dark; }
6
+
7
+ body {
8
+ background-color: var(--background);
9
+ color: var(--foreground);
10
+ font-family: var(--font-sans);
11
+ line-height: 1.5;
12
+ }
13
+
14
+ :is(h1, h2, h3, h4, h5) {
15
+ font-family: var(--font-display);
16
+ line-height: 1.2;
17
+ color: var(--foreground);
18
+ }
19
+
20
+ button { cursor: pointer; background: none; }
21
+
22
+ dialog { background: transparent; color: inherit; }
23
+
24
+ :where([popover]) { color: inherit; }
25
+
26
+ :is(a, button, input, textarea, select, summary, [tabindex]):focus-visible,
27
+ label:has(input.sr-only:focus-visible) {
28
+ outline: calc(var(--spacing) * 0.5) solid var(--ring, color-mix(in oklab, var(--primary) 50%, transparent));
29
+ outline-offset: 0;
30
+ }
31
+
32
+ dialog:focus-visible { outline: none; }
33
+
34
+ :where(code):not(:where(pre code)) {
35
+ @apply lc-inline-code;
36
+ }
37
+
38
+ @media (prefers-reduced-motion: reduce) {
39
+ *, *::before, *::after {
40
+ animation-duration: 0.01ms !important;
41
+ animation-iteration-count: 1 !important;
42
+ transition-duration: 0.01ms !important;
43
+ }
44
+ }
45
+ }
@@ -1,26 +1,27 @@
1
1
  @layer components {
2
- /* Shared paper-card chrome. Used as a bare `.card-surface` hook in ~17
3
- places across many feature partials (group lists, transactions, overview
4
- cards and currency tools. Kept authored — not folded into
5
- card_surface_class — because several call sites override the border
6
- (`border-transparent`), background or radius with utilities that must
7
- out-cascade this base; a utilities-layer helper emitting a `[border:…]`
8
- shorthand would defeat those overrides. Semantic classes set the
9
- --card-surface-* vars for local tone. (Form cards use form_card_class,
10
- which carries this same chrome plus padding/container/error border.) */
11
- .card-surface {
12
- --avatar-cutout: var(--card-surface-bg, var(--paper-2));
13
- background: var(--card-surface-bg, var(--paper-2));
14
- border: var(--card-surface-border, 1px solid transparent);
15
- border-radius: var(--card-surface-radius, var(--radius-3xl));
16
- box-shadow: var(--card-surface-shadow, none);
17
- transition:
18
- background 0.18s var(--ease-out),
19
- border-color 0.18s var(--ease-out),
20
- box-shadow 0.18s var(--ease-out);
21
- }
2
+ /* Padding comes from --lc-inset, so a card that sets --lc-inset passes the
3
+ same rhythm to everything inside it. */
22
4
 
23
- .form-card + .form-card { margin-block-start: 1rem; }
5
+ /* Inputs keep their --input fill on cards. Fills that are muted on the page
6
+ (choice tiles, alerts, neutral badges, skeletons) switch to the page
7
+ background, and toggle group tracks to the accent fill, so they stay
8
+ visible on the muted card. */
9
+ .lc-card {
10
+ --lc-tile-bg: var(--background);
11
+ --lc-track-bg: var(--accent);
12
+ --lc-avatar-cutout: var(--lc-card-bg, var(--card));
13
+ background: var(--lc-card-bg, var(--card));
14
+ color: var(--card-foreground);
15
+ border: var(--lc-card-border, thin solid transparent);
16
+ border-radius: var(--lc-card-radius, var(--radius-3xl));
17
+ box-shadow: var(--lc-card-shadow, none);
18
+ transition:
19
+ background-color var(--lc-motion-control) var(--lc-ease-out),
20
+ border-color var(--lc-motion-control) var(--lc-ease-out),
21
+ box-shadow var(--lc-motion-control) var(--lc-ease-out);
24
22
 
25
- .form-submit { margin-block-start: 2rem; }
23
+ &:has([data-tone="destructive"], [aria-invalid="true"]) {
24
+ border-color: color-mix(in oklab, var(--destructive) 30%, var(--border));
25
+ }
26
+ }
26
27
  }
@@ -0,0 +1,39 @@
1
+ @layer components {
2
+ /* The thumb is a gradient on the input itself, so the switch needs no extra
3
+ element. Forced colors fall back to the native checkbox. */
4
+ .lc-switch {
5
+ --lc-switch-thumb: var(--background);
6
+
7
+ appearance: none;
8
+ inline-size: calc(var(--spacing) * 9);
9
+ block-size: calc(var(--spacing) * 5.5);
10
+ border-radius: var(--radius-pill);
11
+ background-color: var(--input);
12
+ background-image: radial-gradient(circle closest-side, var(--lc-switch-thumb) calc(100% - var(--spacing) * 0.375), transparent 100%);
13
+ background-size: calc(var(--spacing) * 5.5) calc(var(--spacing) * 5.5);
14
+ background-repeat: no-repeat;
15
+ background-position: left center;
16
+ transition:
17
+ background-color var(--lc-motion-control) var(--lc-ease-out),
18
+ background-position var(--lc-motion-control) var(--lc-ease-out);
19
+
20
+ &:checked {
21
+ --lc-switch-thumb: var(--primary-foreground);
22
+
23
+ background-color: var(--primary);
24
+ background-position: right center;
25
+ }
26
+
27
+ &:dir(rtl) { background-position: right center; }
28
+ &:dir(rtl):checked { background-position: left center; }
29
+
30
+ @media (forced-colors: active) {
31
+ appearance: auto;
32
+ }
33
+ }
34
+
35
+ /* Rails wraps invalid controls in .field_with_errors; library controls ignore the wrapper. */
36
+ .field_with_errors:has(> [data-slot]) {
37
+ display: contents;
38
+ }
39
+ }
@@ -0,0 +1,10 @@
1
+ @layer components {
2
+ @media (hover: hover) and (pointer: fine) {
3
+ .lc-code-block-copy { opacity: 0; }
4
+
5
+ .lc-code-block:is(:hover, :focus-within) .lc-code-block-copy,
6
+ .lc-code-block-copy:has([data-state="copied"], [data-state="error"]) {
7
+ opacity: 1;
8
+ }
9
+ }
10
+ }
@@ -1,8 +1,8 @@
1
- /* Removing [open] hides the content at once, so disclosure_controller holds the
1
+ /* Removing [open] hides the content at once, so lc-collapsible holds the
2
2
  panel open under [data-closing] for the exit, then closes it. Transitioning
3
3
  content-visibility makes WebKit keep the panel hidden for part of the opening. */
4
4
  @layer components {
5
- .disclosure-animated {
5
+ .lc-collapsible {
6
6
  interpolate-size: allow-keywords; /* browser-compat: enhancement */
7
7
 
8
8
  &::details-content {
@@ -11,9 +11,9 @@
11
11
  opacity: 0;
12
12
  translate: 0 -0.375rem;
13
13
  transition:
14
- block-size 420ms var(--ease-out-expo),
15
- opacity 220ms var(--ease-out),
16
- translate 320ms var(--ease-out-expo);
14
+ block-size 420ms var(--lc-ease-out-expo),
15
+ opacity 220ms var(--lc-ease-out),
16
+ translate 320ms var(--lc-ease-out-expo);
17
17
  }
18
18
 
19
19
  &[open]::details-content {
@@ -28,7 +28,7 @@
28
28
  opacity: 0;
29
29
  translate: 0 -0.375rem;
30
30
  transition-duration: 260ms, 160ms, 200ms;
31
- transition-timing-function: var(--ease-out);
31
+ transition-timing-function: var(--lc-ease-out);
32
32
  }
33
33
 
34
34
  @supports (interpolate-size: allow-keywords) {
@@ -0,0 +1,5 @@
1
+ /* lc_code_block. Its copy button ships in core. */
2
+ @import "../code-block.css";
3
+ @source "../../../../../helpers/lostcoords/ui/code_block_helper.rb";
4
+ @source "../../../../../views/lostcoords/ui/components/_lc_code_block.html.erb";
5
+ @source "../../../../../javascript/lostcoords/ui/controllers/lc_code_block_controller.js";
@@ -0,0 +1,5 @@
1
+ /* lc_collapsible. */
2
+ @import "../collapsible.css";
3
+ @source "../../../../../helpers/lostcoords/ui/collapsible_helper.rb";
4
+ @source "../../../../../views/lostcoords/ui/components/_lc_collapsible.html.erb";
5
+ @source "../../../../../javascript/lostcoords/ui/controllers/lc_collapsible_controller.js";
@@ -0,0 +1,9 @@
1
+ /* lc_dialog, with the phone sheet (lc_sheet_data) and confirm dialogs. */
2
+ @import "../sheet.css";
3
+ @import "../dialog.css";
4
+ @source "../../../../../helpers/lostcoords/ui/dialog_helper.rb";
5
+ @source "../../../../../helpers/lostcoords/ui/sheet_helper.rb";
6
+ @source "../../../../../views/lostcoords/ui/components/_lc_dialog.html.erb";
7
+ @source "../../../../../javascript/lostcoords/ui/controllers/lc_dialog_controller.js";
8
+ @source "../../../../../javascript/lostcoords/ui/controllers/lc_sheet_controller.js";
9
+ @source "../../../../../javascript/lostcoords/ui/controllers/lc_confirm_dialog_controller.js";
@@ -0,0 +1,5 @@
1
+ /* lc_emoji_picker. */
2
+ @import "../emoji-picker.css";
3
+ @source "../../../../../helpers/lostcoords/ui/emoji_picker_helper.rb";
4
+ @source "../../../../../views/lostcoords/ui/components/_emoji_picker*.html.erb";
5
+ @source "../../../../../javascript/lostcoords/ui/controllers/lc_emoji_picker_controller.js";
@@ -0,0 +1,5 @@
1
+ /* lc_menu, lc_menu_option and lc_popover. */
2
+ @source "../../../../../helpers/lostcoords/ui/menu_helper.rb";
3
+ @source "../../../../../views/lostcoords/ui/components/_lc_floating_panel.html.erb";
4
+ @source "../../../../../javascript/lostcoords/ui/controllers/lc_menu_controller.js";
5
+ @source "../../../../../javascript/lostcoords/ui/controllers/lc_popover_controller.js";
@@ -0,0 +1,3 @@
1
+ /* lc_prose, long-form reading content. */
2
+ @import "../prose.css";
3
+ @source "../../../../../helpers/lostcoords/ui/reading_helper.rb";
@@ -0,0 +1,3 @@
1
+ /* lc_table. */
2
+ @import "../table.css";
3
+ @source "../../../../../helpers/lostcoords/ui/table_helper.rb";
@@ -0,0 +1,5 @@
1
+ /* lc_toast and lc_toast_region. */
2
+ @import "../toast.css";
3
+ @source "../../../../../helpers/lostcoords/ui/toast_helper.rb";
4
+ @source "../../../../../javascript/lostcoords/ui/controllers/lc_toast_controller.js";
5
+ @source "../../../../../javascript/lostcoords/ui/controllers/lc_toast_region_controller.js";
@@ -0,0 +1,4 @@
1
+ /* lc_tooltip. */
2
+ @import "../tooltip.css";
3
+ @source "../../../../../helpers/lostcoords/ui/tooltip_helper.rb";
4
+ @source "../../../../../javascript/lostcoords/ui/controllers/lc_tooltip_controller.js";
@@ -0,0 +1,12 @@
1
+ /* Every component. For a smaller build import ./core.css and the files in
2
+ ./components/ you use instead. */
3
+ @import "./core.css";
4
+ @import "./components/dialog.css";
5
+ @import "./components/menu.css";
6
+ @import "./components/toast.css";
7
+ @import "./components/tooltip.css";
8
+ @import "./components/collapsible.css";
9
+ @import "./components/code-block.css";
10
+ @import "./components/emoji-picker.css";
11
+ @import "./components/table.css";
12
+ @import "./components/prose.css";
@@ -1,7 +1,7 @@
1
1
  @layer components {
2
- .ui-copy { display: inline-grid; }
2
+ .lc-copy { display: inline-grid; }
3
3
 
4
- .ui-copy-content {
4
+ .lc-copy-content {
5
5
  grid-area: 1 / 1;
6
6
  display: inline-flex;
7
7
  align-items: center;
@@ -11,21 +11,21 @@
11
11
  visibility: hidden;
12
12
  transform: translateY(0.2rem) scale(0.96);
13
13
  transition:
14
- opacity var(--ui-motion-feedback) var(--ease-out),
15
- transform var(--ui-motion-feedback) var(--ease-out),
16
- visibility var(--ui-motion-feedback);
14
+ opacity var(--lc-motion-feedback) var(--lc-ease-out),
15
+ transform var(--lc-motion-feedback) var(--lc-ease-out),
16
+ visibility var(--lc-motion-feedback);
17
17
  }
18
18
 
19
- .ui-copy[data-state="idle"] [data-copy-state="idle"],
20
- .ui-copy[data-state="copied"] [data-copy-state="copied"],
21
- .ui-copy[data-state="error"] [data-copy-state="error"] {
19
+ .lc-copy[data-state="idle"] [data-copy-state="idle"],
20
+ .lc-copy[data-state="copied"] [data-copy-state="copied"],
21
+ .lc-copy[data-state="error"] [data-copy-state="error"] {
22
22
  opacity: 1;
23
23
  visibility: visible;
24
24
  transform: none;
25
25
  }
26
26
 
27
27
  @media (prefers-reduced-motion: reduce) {
28
- .ui-copy-content {
28
+ .lc-copy-content {
29
29
  transform: none;
30
30
  transition: none;
31
31
  }
@@ -0,0 +1,21 @@
1
+ /* Tokens, foundations and the components almost every app uses: buttons,
2
+ badges, avatars, cards, alerts, form controls, choices, toggles, copy buttons,
3
+ layout, typography and navigation. Add the opt-in components in ./components/ that
4
+ you render, or import ../components.css for everything. */
5
+ @import "./theme.css";
6
+ @source "../../../../helpers/lostcoords/ui/{badge,button,card,choice,copy_button,description_list,feedback,form,glass,icon,layout,navigation,primitives,render_attributes,structures,tailwind,translation,typography}_helper.rb";
7
+ @source "../../../../javascript/lostcoords/ui/helpers/*.js";
8
+ @source "../../../../javascript/lostcoords/ui/controllers/lc_{copy,kbd,selection,shortcut,tabs,toggle}_controller.js";
9
+ @source "../../../../../lib/lostcoords/ui/parts.rb";
10
+
11
+ @import "./glass.css";
12
+ @import "./popover.css";
13
+ @import "./card.css";
14
+ @import "./avatar.css";
15
+ @import "./squircle.css";
16
+ @import "./utilities.css";
17
+ @import "./typography.css";
18
+ @import "./layout.css";
19
+ @import "./field.css";
20
+ @import "./choice.css";
21
+ @import "./copy-button.css";
@@ -1,20 +1,20 @@
1
1
  @layer components {
2
- .app-dialog {
3
- --dialog-from: translateY(0.4rem) scale(0.98);
4
- --dialog-fade: 0.2s;
5
- --dialog-duration: 0.2s;
2
+ .lc-dialog {
3
+ --lc-dialog-from: translateY(0.4rem) scale(0.98);
4
+ --lc-dialog-fade: 0.2s;
5
+ --lc-dialog-duration: 0.2s;
6
6
 
7
7
  /* Preflight's `margin: 0` clobbers the UA `margin: auto` that centres a modal dialog. */
8
8
  margin: auto;
9
9
  overflow: hidden;
10
10
  overscroll-behavior: contain;
11
11
  opacity: 0;
12
- transform: var(--dialog-from);
12
+ transform: var(--lc-dialog-from);
13
13
  transition:
14
- opacity var(--dialog-fade) var(--ease-out-expo),
15
- transform var(--dialog-duration) var(--ease-out-expo),
16
- display var(--dialog-duration) allow-discrete,
17
- overlay var(--dialog-duration) allow-discrete;
14
+ opacity var(--lc-dialog-fade) var(--lc-ease-out-expo),
15
+ transform var(--lc-dialog-duration) var(--lc-ease-out-expo),
16
+ display var(--lc-dialog-duration) allow-discrete,
17
+ overlay var(--lc-dialog-duration) allow-discrete;
18
18
 
19
19
  &[open] {
20
20
  opacity: 1;
@@ -22,7 +22,7 @@
22
22
 
23
23
  @starting-style {
24
24
  opacity: 0;
25
- transform: var(--dialog-from);
25
+ transform: var(--lc-dialog-from);
26
26
  }
27
27
  }
28
28
 
@@ -32,14 +32,14 @@
32
32
  background: transparent;
33
33
  backdrop-filter: blur(0);
34
34
  transition:
35
- background-color var(--dialog-fade) var(--ease-out),
36
- backdrop-filter var(--dialog-fade) var(--ease-out),
37
- display var(--dialog-fade) allow-discrete,
38
- overlay var(--dialog-fade) allow-discrete;
35
+ background-color var(--lc-dialog-fade) var(--lc-ease-out),
36
+ backdrop-filter var(--lc-dialog-fade) var(--lc-ease-out),
37
+ display var(--lc-dialog-fade) allow-discrete,
38
+ overlay var(--lc-dialog-fade) allow-discrete;
39
39
  }
40
40
 
41
41
  &[open]::backdrop {
42
- background: var(--scrim);
42
+ background: var(--lc-scrim);
43
43
  backdrop-filter: blur(2px);
44
44
 
45
45
  @starting-style {
@@ -48,8 +48,8 @@
48
48
  }
49
49
  }
50
50
 
51
- &.context-dialog[open]::backdrop {
52
- background: var(--scrim-soft);
51
+ &.lc-dialog-context[open]::backdrop {
52
+ background: var(--lc-scrim-soft);
53
53
  backdrop-filter: none;
54
54
  }
55
55