lookbook 1.1.0 → 1.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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/lookbook/js/helpers/string.js +23 -1
  3. data/app/assets/lookbook/js/lookbook.js +0 -1
  4. data/app/components/lookbook/display_options/editor/component.html.erb +13 -0
  5. data/app/components/lookbook/display_options/editor/component.rb +7 -0
  6. data/app/components/lookbook/display_options/field/component.css +33 -0
  7. data/app/components/lookbook/display_options/field/component.html.erb +8 -0
  8. data/app/components/lookbook/display_options/field/component.js +30 -0
  9. data/app/components/lookbook/display_options/field/component.rb +28 -0
  10. data/app/components/lookbook/inspector_panel/component.html.erb +1 -1
  11. data/app/components/lookbook/inspector_panel/component.rb +10 -11
  12. data/app/components/lookbook/params/editor/component.rb +6 -3
  13. data/app/components/lookbook/params/field/component.rb +1 -5
  14. data/app/components/lookbook/tab_panels/panel/component.html.erb +1 -1
  15. data/app/components/lookbook/tab_panels/panel/component.rb +1 -2
  16. data/app/components/lookbook/tabs/dropdown_tab/component.html.erb +1 -0
  17. data/app/components/lookbook/tabs/tab/component.html.erb +1 -0
  18. data/app/components/lookbook/viewport/component.html.erb +1 -1
  19. data/app/components/lookbook/viewport/component.rb +2 -1
  20. data/app/controllers/lookbook/previews_controller.rb +40 -29
  21. data/app/helpers/lookbook/preview_helper.rb +1 -1
  22. data/app/views/lookbook/preview.html.erb +1 -1
  23. data/app/views/lookbook/previews/panels/_params.html.erb +1 -1
  24. data/app/views/lookbook/previews/panels/_preview.html.erb +9 -6
  25. data/app/views/lookbook/previews/show.html.erb +29 -11
  26. data/config/app.yml +36 -0
  27. data/config/hooks.yml +4 -0
  28. data/config/inputs.yml +48 -0
  29. data/config/panels.yml +30 -0
  30. data/config/routes.rb +1 -1
  31. data/config/tags.yml +29 -0
  32. data/lib/lookbook/engine.rb +40 -87
  33. data/lib/lookbook/markdown.rb +1 -11
  34. data/lib/lookbook/page.rb +1 -1
  35. data/lib/lookbook/params.rb +0 -7
  36. data/lib/lookbook/parser.rb +3 -10
  37. data/lib/lookbook/preview.rb +7 -3
  38. data/lib/lookbook/preview_example.rb +7 -3
  39. data/lib/lookbook/preview_group.rb +2 -2
  40. data/lib/lookbook/services/config_loader.rb +20 -0
  41. data/lib/lookbook/services/search_param_builder.rb +13 -0
  42. data/lib/lookbook/services/search_param_parser.rb +15 -0
  43. data/lib/lookbook/services/tags/key_value_tag_parser.rb +24 -0
  44. data/lib/lookbook/source_inspector.rb +10 -16
  45. data/lib/lookbook/stores/config_store.rb +80 -0
  46. data/lib/lookbook/stores/hook_store.rb +28 -0
  47. data/lib/lookbook/stores/input_store.rb +58 -0
  48. data/lib/lookbook/stores/panel_store.rb +141 -0
  49. data/lib/lookbook/stores/tag_store.rb +46 -0
  50. data/lib/lookbook/support/errors/config_error.rb +7 -0
  51. data/lib/lookbook/support/errors/lookbook_error.rb +21 -0
  52. data/lib/lookbook/support/errors/parser_error.rb +7 -0
  53. data/lib/lookbook/support/service.rb +7 -0
  54. data/lib/lookbook/support/store.rb +77 -0
  55. data/lib/lookbook/support/utils/attribute_utils.rb +9 -0
  56. data/lib/lookbook/support/utils/path_utils.rb +19 -0
  57. data/lib/lookbook/tags.rb +5 -14
  58. data/lib/lookbook/version.rb +1 -1
  59. data/lib/lookbook.rb +106 -30
  60. data/public/lookbook-assets/css/lookbook.css +33 -0
  61. data/public/lookbook-assets/css/lookbook.css.map +1 -1
  62. data/public/lookbook-assets/js/lookbook.js +158 -21
  63. data/public/lookbook-assets/js/lookbook.js.map +1 -1
  64. metadata +43 -7
  65. data/lib/lookbook/config.rb +0 -282
  66. data/lib/lookbook/data.rb +0 -11
  67. data/lib/lookbook/hooks.rb +0 -21
  68. data/lib/lookbook/panels.rb +0 -25
  69. data/lib/lookbook/store.rb +0 -48
@@ -0,0 +1,58 @@
1
+ module Lookbook
2
+ class InputStore
3
+ CONFIG_FILE = "config/inputs.yml"
4
+
5
+ DEFAULTS = {
6
+ # TODO
7
+ }
8
+
9
+ attr_reader :store
10
+ delegate :to_h, to: :store
11
+
12
+ def initialize(config = nil)
13
+ @store = {}
14
+
15
+ config.to_h.each do |name, opts|
16
+ add_input(name, opts[:partial], opts.except(:partial))
17
+ end
18
+ end
19
+
20
+ def add_input(input, *args)
21
+ store[input.to_sym] = build_config(input, *args)
22
+ end
23
+
24
+ def get_input(input)
25
+ store[input.to_sym]
26
+ end
27
+
28
+ def self.init_from_config
29
+ new(default_config)
30
+ end
31
+
32
+ def self.default_config
33
+ ConfigLoader.call(CONFIG_FILE)
34
+ end
35
+
36
+ protected
37
+
38
+ def build_config(name, *args)
39
+ partial = nil
40
+ opts = nil
41
+ if args.many? && args.last.is_a?(Hash)
42
+ partial = args.first
43
+ opts = args.last
44
+ elsif args.first.is_a?(String)
45
+ partial = args.first
46
+ end
47
+ if partial.present?
48
+ Store.new({
49
+ name: name.to_sym,
50
+ partial: partial,
51
+ opts: DEFAULTS.merge(opts.to_h)
52
+ })
53
+ else
54
+ raise ConfigError.new("inputs must define a partial path", scope: "inputs.config")
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,141 @@
1
+ module Lookbook
2
+ class PanelStore
3
+ CONFIG_FILE = "config/panels.yml"
4
+
5
+ DEFAULTS = {
6
+ label: lambda { |data| data.name.titleize },
7
+ hotkey: nil,
8
+ disabled: false,
9
+ show: true,
10
+ copy: nil,
11
+ locals: {}
12
+ }
13
+
14
+ attr_reader :store
15
+ delegate :to_h, to: :store
16
+
17
+ def initialize(config = nil)
18
+ @store = {}
19
+ load_config(config)
20
+ end
21
+
22
+ def add_panel(name, group_name, *args)
23
+ if get_panel(name)
24
+ raise ConfigError.new("panel with name '#{name}' already exists", scope: "panels.config")
25
+ else
26
+ panel = build_config(name, group_name, *args)
27
+ insert_at_position(group_name, panel.position, panel)
28
+ end
29
+ end
30
+
31
+ def update_panel(name, opts = {})
32
+ panel = get_panel(name)
33
+ if panel.present?
34
+ panel.merge!(opts.except(:name, :position))
35
+ if opts.key?(:position)
36
+ remove_panel(name)
37
+ insert_at_position(panel.group, opts[:position], panel)
38
+ end
39
+ else
40
+ not_found!(name)
41
+ end
42
+ end
43
+
44
+ def remove_panel(name)
45
+ store.each do |group_name, panels|
46
+ return true unless panels.reject! { |p| p.name == name.to_sym }.nil?
47
+ end
48
+ not_found!(name)
49
+ end
50
+
51
+ def load_config(config)
52
+ config.to_h.each do |group_name, panels|
53
+ panels.each do |opts|
54
+ add_panel(opts[:name], group_name, opts.except(:name))
55
+ end
56
+ end
57
+ end
58
+
59
+ def get_panel(name, group_name = nil)
60
+ panels(group_name).find { |p| p.name == name.to_sym }
61
+ end
62
+
63
+ def count_panels(group_name = nil)
64
+ panels(group_name).count
65
+ end
66
+
67
+ def in_group(name)
68
+ store[name.to_sym] ||= []
69
+ end
70
+
71
+ def panels(group_name = nil)
72
+ store.to_h.reduce([]) do |result, (name, group_panels)|
73
+ result.push(*group_panels) if group_name.nil? || name == group_name.to_sym
74
+ end
75
+ end
76
+
77
+ def self.resolve_config(opts, data)
78
+ if opts[:name].present?
79
+ data = data.is_a?(Store) ? data : Store.new(data)
80
+ data.name = opts[:name].to_s
81
+ resolved = opts.transform_values do |value|
82
+ value.respond_to?(:call) ? value.call(data) : value
83
+ end
84
+ Store.new(resolved)
85
+ else
86
+ raise ConfigError.new(":name key is required when resolving config", scope: "panels.config")
87
+ end
88
+ end
89
+
90
+ def self.init_from_config
91
+ new(default_config)
92
+ end
93
+
94
+ def self.default_config
95
+ config = ConfigLoader.call(CONFIG_FILE)
96
+ config.each do |group, panels|
97
+ panels.map! do |opts|
98
+ opts.transform_values! do |value|
99
+ value.is_a?(String) && value.start_with?("->") ? eval(value) : value # standard:disable Security/Eval
100
+ end
101
+ end
102
+ end
103
+ end
104
+
105
+ protected
106
+
107
+ def insert_at_position(group_name, position, opts)
108
+ group_panels = in_group(group_name)
109
+ index = insert_index(position, group_panels.count)
110
+ group_panels.insert(index, opts.except!(:position))
111
+ end
112
+
113
+ def insert_index(position, items_count)
114
+ index = position == 0 ? 1 : (position || 0).to_int
115
+ last_position = items_count + 1
116
+ index = last_position if index > last_position
117
+ index - 1
118
+ end
119
+
120
+ def build_config(name, group_name, *args)
121
+ opts = if args.many? && args.last.is_a?(Hash)
122
+ args.last.merge({partial: args.first})
123
+ elsif args.any?
124
+ args.first.is_a?(String) ? {partial: args.first} : args.first
125
+ else
126
+ {}
127
+ end
128
+ if opts[:partial].present?
129
+ opts[:name] = name.to_sym
130
+ opts[:group] = group_name.to_sym
131
+ Store.new(DEFAULTS.merge(opts))
132
+ else
133
+ raise ConfigError.new("panels must define a partial path", scope: "panels.config")
134
+ end
135
+ end
136
+
137
+ def not_found!(name)
138
+ raise ConfigError.new("could not find panel named '#{name}'", scope: "panels.config")
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,46 @@
1
+ module Lookbook
2
+ class TagStore
3
+ CONFIG_FILE = "config/tags.yml"
4
+
5
+ attr_reader :store
6
+ delegate :to_h, to: :store
7
+
8
+ def initialize(config = nil)
9
+ @store = {}
10
+ config.to_h.each { add_tag(_1, _2) }
11
+ end
12
+
13
+ def add_tag(name, opts = nil)
14
+ name = name.to_sym
15
+ if store.key?(name)
16
+ raise ConfigError.new("tag with name '#{name}' already exists", scope: "tags.config")
17
+ else
18
+ store[name] = build_config(name, opts)
19
+ end
20
+ end
21
+
22
+ def get_tag(name)
23
+ store[name.to_sym]
24
+ end
25
+
26
+ def self.init_from_config
27
+ new(default_config)
28
+ end
29
+
30
+ def self.default_config
31
+ ConfigLoader.call(CONFIG_FILE)
32
+ end
33
+
34
+ protected
35
+
36
+ def build_config(name, opts = nil)
37
+ opts = opts.to_h
38
+ Store.new({
39
+ name: name.to_sym,
40
+ label: opts[:label] || name.to_s.titleize,
41
+ yard_parser: opts[:yard_parser]&.to_sym,
42
+ opts: opts[:opts].to_h
43
+ })
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,7 @@
1
+ module Lookbook
2
+ class ConfigError < LookbookError
3
+ def initialize(msg = nil, scope: "config", **kwargs)
4
+ super(msg, scope: scope, **kwargs)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,21 @@
1
+ module Lookbook
2
+ class LookbookError < StandardError
3
+ attr_reader :scope, :original, :message
4
+
5
+ def initialize(msg = nil, scope: nil, original: nil)
6
+ @scope = scope
7
+ @original = original
8
+ @message = msg
9
+ super(msg)
10
+ end
11
+
12
+ def full_message
13
+ if msg.nil?
14
+ message
15
+ else
16
+ scope_str = scope.nil? ? "[#{scope}]" : ""
17
+ "#{scope_str} #{message}".strip
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,7 @@
1
+ module Lookbook
2
+ class ParserError < LookbookError
3
+ def initialize(msg = nil, scope: "parser", **kwargs)
4
+ super(msg, scope: scope, **kwargs)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Lookbook
2
+ class Service
3
+ def self.call(*args, **kwargs)
4
+ new(*args, **kwargs).call
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,77 @@
1
+ module Lookbook
2
+ class Store < ActiveSupport::OrderedOptions
3
+ def initialize(initial_data = nil, opts = {})
4
+ @recursive = opts[:recursive] || false
5
+ super()
6
+ initial_data.to_h.each { self[_1] = _2 }
7
+ end
8
+
9
+ def []=(key, value)
10
+ super(key, normalize_value(value))
11
+ end
12
+
13
+ def fetch(name, *args)
14
+ super(name.to_sym, *args)
15
+ end
16
+
17
+ def method_missing(name, *args)
18
+ if name.to_s.end_with?("=")
19
+ args[0] = normalize_value(args[0])
20
+ end
21
+ super(name, *args)
22
+ end
23
+
24
+ def respond_to_missing?(name, include_private)
25
+ true
26
+ end
27
+
28
+ # def [](key)
29
+ # key = key.to_sym
30
+ # if respond_to? key
31
+ # public_send(key)
32
+ # else
33
+ # self[key]
34
+ # end
35
+ # end
36
+
37
+ # def []=(key, value)
38
+ # setter_key = "#{key}=".to_sym
39
+ # if respond_to? setter_key
40
+ # public_send(setter_key, value)
41
+ # else
42
+ # _set(key.to_sym, normalize_value(value))
43
+ # end
44
+ # end
45
+
46
+ # def method_missing(key, *args)
47
+ # if key.to_s.end_with?("=")
48
+ # args[0] = normalize_value(args[0])
49
+ # end
50
+ # public_send(key.to_sym, *args)
51
+ # end
52
+
53
+ # def respond_to_missing?(key, *args)
54
+ # key?(key.to_sym)
55
+ # end
56
+
57
+ # def fetch(key, *args)
58
+ # super.fetch(key.to_sym, *args)
59
+ # end
60
+
61
+ def to_h
62
+ transform_values do |value|
63
+ value.is_a?(Store) ? value.to_h : value
64
+ end
65
+ end
66
+
67
+ def to_hash
68
+ to_h
69
+ end
70
+
71
+ protected
72
+
73
+ def normalize_value(value)
74
+ @recursive && !value.is_a?(Store) && value.is_a?(Hash) ? Store.new(value, recursive: @recursive) : value
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,9 @@
1
+ module Lookbook
2
+ module AttributeUtils
3
+ class << self
4
+ def dom_id(*args)
5
+ ["lookbook", *args].join("-").parameterize.dasherize
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ module Lookbook
2
+ module PathUtils
3
+ class << self
4
+ def to_absolute(path)
5
+ File.absolute_path(path.to_s, Rails.root)
6
+ end
7
+
8
+ def normalize_all(paths, allow_root: false)
9
+ root = Rails.application.root.to_s
10
+ paths.map do |path|
11
+ full_path = to_absolute(path)
12
+ if Dir.exist?(full_path)
13
+ full_path if allow_root || full_path.to_s != root
14
+ end
15
+ end.compact.uniq
16
+ end
17
+ end
18
+ end
19
+ end
data/lib/lookbook/tags.rb CHANGED
@@ -1,23 +1,14 @@
1
1
  module Lookbook
2
2
  module Tags
3
- def define_tag(name, args = nil, opts = {}, &block)
4
- name = name.to_s.downcase.underscore.to_sym
5
- if args.is_a? Hash
6
- opts = args
7
- args = nil
8
- end
9
- opts[:args] = args
10
- opts[:parser] = block if block
11
- Lookbook.config.preview_tags[name] = opts
12
- end
13
-
14
3
  def self.process_tags(tag_objects, file: nil, eval_scope: nil)
15
4
  return [] if tag_objects.none?
16
5
  tag_objects.map do |tag_object|
17
- opts = Lookbook.config.preview_tags[tag_object.tag_name] || {}
6
+ tag_config = Engine.tags.get_tag(tag_object.tag_name).to_h
7
+ tag_opts = tag_config[:opts].to_h
18
8
  Lookbook::Tag.new(tag_object,
19
- opts[:args],
20
- **opts.except(:args),
9
+ tag_opts[:named_args],
10
+ parser: tag_opts[:args_parser],
11
+ **tag_opts.except(:named_args, :args_parser),
21
12
  file: file,
22
13
  eval_scope: eval_scope)
23
14
  end.compact
@@ -1,3 +1,3 @@
1
1
  module Lookbook
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
data/lib/lookbook.rb CHANGED
@@ -1,34 +1,110 @@
1
- require "active_support/dependencies/autoload"
2
- require "lookbook/engine"
1
+ require "zeitwerk"
3
2
  require "lookbook/version"
4
- require "view_component/engine"
3
+
4
+ loader = Zeitwerk::Loader.for_gem
5
+ loader.ignore("#{__dir__}/lookbook.rb")
6
+ loader.push_dir("#{__dir__}/lookbook", namespace: Lookbook)
7
+ loader.collapse("#{__dir__}/lookbook/*")
8
+ loader.collapse("#{__dir__}/lookbook/*/*")
9
+ loader.setup
5
10
 
6
11
  module Lookbook
7
- extend ActiveSupport::Autoload
8
-
9
- autoload :Error, "lookbook/error"
10
- autoload :Utils, "lookbook/utils"
11
- autoload :Lang, "lookbook/lang"
12
- autoload :Params, "lookbook/params"
13
- autoload :TagOptions, "lookbook/tag_options"
14
- autoload :Page, "lookbook/page"
15
- autoload :Tag, "lookbook/tag"
16
- autoload :PageSection, "lookbook/page_section"
17
- autoload :PageCollection, "lookbook/page_collection"
18
- autoload :Features, "lookbook/features"
19
- autoload :Collection, "lookbook/collection"
20
- autoload :Entity, "lookbook/entity"
21
- autoload :Parser, "lookbook/parser"
22
- autoload :Preview, "lookbook/preview"
23
- autoload :PreviewCollection, "lookbook/preview_collection"
24
- autoload :PreviewController, "lookbook/preview_controller"
25
- autoload :PreviewExample, "lookbook/preview_example"
26
- autoload :PreviewGroup, "lookbook/preview_group"
27
- autoload :SourceInspector, "lookbook/source_inspector"
28
- autoload :TemplateParser, "lookbook/template_parser"
29
- autoload :CodeFormatter, "lookbook/code_formatter"
30
- autoload :Markdown, "lookbook/markdown"
31
- autoload :Theme, "lookbook/theme"
32
- autoload :Store, "lookbook/store"
33
- autoload :Component, "lookbook/component"
12
+ class << self
13
+ def version
14
+ Lookbook::VERSION
15
+ end
16
+
17
+ def config
18
+ @config ||= ConfigStore.init_from_config
19
+ end
20
+
21
+ def configure
22
+ yield(config)
23
+ end
24
+
25
+ def data
26
+ @data ||= Store.new
27
+ end
28
+
29
+ def data=(new_data)
30
+ @data = Store.new(new_data)
31
+ end
32
+
33
+ def logger
34
+ @logger ||= if Rails.logger.present? && config.log_use_rails_logger
35
+ Rails.logger
36
+ else
37
+ logger = Logger.new($stdout)
38
+ logger.level = config.log_level
39
+ logger
40
+ end
41
+ end
42
+
43
+ def debug_data
44
+ {
45
+ version: version,
46
+ env: Rails.env.to_s,
47
+ config: [
48
+ config.to_h,
49
+ {panels: Engine.panels.to_h},
50
+ {inputs: Engine.inputs.to_h},
51
+ {tags: Engine.tags.to_h}
52
+ ].inject(:merge)
53
+ }
54
+ end
55
+
56
+ def previews
57
+ Preview.all
58
+ end
59
+
60
+ def pages
61
+ Page.all
62
+ end
63
+
64
+ def broadcast(event_name, data = {})
65
+ Engine.websocket&.broadcast(event_name.to_s, data)
66
+ end
67
+
68
+ def theme
69
+ @theme ||= Lookbook::Theme.new(config.ui_theme, config.ui_theme_overrides)
70
+ end
71
+
72
+ def define_param_input(*args)
73
+ Engine.inputs.add_input(*args)
74
+ end
75
+
76
+ def define_panel(name, *args)
77
+ Engine.panels.add_panel(name, :drawer, *args)
78
+ end
79
+
80
+ def amend_panel(*args)
81
+ Engine.panels.update_panel(*args)
82
+ end
83
+
84
+ def remove_panel(name)
85
+ Engine.panels.remove_panel(name)
86
+ end
87
+
88
+ def define_tag(name, args = nil, &block)
89
+ Engine.tags.add_tag(name, {
90
+ named_args: args.to_a,
91
+ args_parser: block
92
+ })
93
+ end
94
+
95
+ def after_initialize(&block)
96
+ Engine.hooks.add_hook(:after_initialize, block)
97
+ end
98
+
99
+ def before_exit(&block)
100
+ Engine.hooks.add_hook(:before_exit, block)
101
+ end
102
+
103
+ def after_change(&block)
104
+ Engine.hooks.add_hook(:after_change, block)
105
+ end
106
+ end
34
107
  end
108
+
109
+ require "rails"
110
+ require "lookbook/engine"
@@ -1691,6 +1691,25 @@ pre[class*="language-"] {
1691
1691
  background-color: rgb(254 252 232 / var(--tw-bg-opacity));
1692
1692
  }
1693
1693
 
1694
+ [data-component="display-options-field"] [type="text"], [data-component="display-options-field"] [type="email"], [data-component="display-options-field"] [type="url"], [data-component="display-options-field"] [type="password"], [data-component="display-options-field"] [type="number"], [data-component="display-options-field"] [type="date"], [data-component="display-options-field"] [type="datetime-local"], [data-component="display-options-field"] [type="month"], [data-component="display-options-field"] [type="search"], [data-component="display-options-field"] [type="tel"], [data-component="display-options-field"] [type="time"], [data-component="display-options-field"] [type="week"], [data-component="display-options-field"] textarea, [data-component="display-options-field"] select {
1695
+ padding: .26rem .6rem;
1696
+ font-size: .8rem;
1697
+ line-height: 1.1rem;
1698
+ }
1699
+
1700
+ [data-component="display-options-field"] label {
1701
+ cursor: pointer;
1702
+ color: var(--lookbook-input-text);
1703
+ font-size: .82rem;
1704
+ }
1705
+
1706
+ [data-component="display-options-field"] select {
1707
+ background-position: right .4rem center;
1708
+ background-size: 1.2em 1.2em;
1709
+ border-radius: .375rem;
1710
+ padding-right: 1.5rem;
1711
+ }
1712
+
1694
1713
  [data-component="icon"] {
1695
1714
  flex: none;
1696
1715
  line-height: 1;
@@ -2504,6 +2523,12 @@ input[type="color"]::-webkit-color-swatch {
2504
2523
  margin-bottom: calc(.75rem * var(--tw-space-y-reverse));
2505
2524
  }
2506
2525
 
2526
+ .space-x-1\.5 > :not([hidden]) ~ :not([hidden]) {
2527
+ --tw-space-x-reverse: 0;
2528
+ margin-right: calc(.375rem * var(--tw-space-x-reverse));
2529
+ margin-left: calc(.375rem * calc(1 - var(--tw-space-x-reverse)) );
2530
+ }
2531
+
2507
2532
  .divide-y > :not([hidden]) ~ :not([hidden]) {
2508
2533
  --tw-divide-y-reverse: 0;
2509
2534
  border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)) );
@@ -2926,6 +2951,10 @@ input[type="color"]::-webkit-color-swatch {
2926
2951
  line-height: 1rem;
2927
2952
  }
2928
2953
 
2954
+ .text-\[0\.82rem\] {
2955
+ font-size: .82rem;
2956
+ }
2957
+
2929
2958
  .text-lg {
2930
2959
  font-size: 1.125rem;
2931
2960
  line-height: 1.75rem;
@@ -3021,6 +3050,10 @@ input[type="color"]::-webkit-color-swatch {
3021
3050
  color: var(--lookbook-viewport-handle-icon-stroke);
3022
3051
  }
3023
3052
 
3053
+ .text-lookbook-input-text {
3054
+ color: var(--lookbook-input-text);
3055
+ }
3056
+
3024
3057
  .text-lookbook-nav-text {
3025
3058
  color: var(--lookbook-nav-text);
3026
3059
  }
@@ -1 +1 @@
1
- {"mappings":"AAKE;;;;;AAOD;;;;AAQC;;;;;;;AASA;;;;;AAOA;;;;;;AAMA;;;;AAIA;;;;;AAUA;;;;;AAKA;;;;AAMA;;;;;AAQA;;;;AAIA;;;;;;;AAMD;;;;AAEA;;;;AAMC;;;;;;AAQA;;;;;;;;;;AAcA;;;;AAMA;;;;;;AASA;;;;AAIA;;;;AAIA;;;;AAIA;;;;AAMA;;;;;AAKA;;;;AAKA;;;;;AAKA;;;;AAIA;;;;AAcD;;;;;AAGA;;;;AAEA;;;;;;AAQC;;;;AAKA;;;;;AAMA;;;;AAKA;;;;AAMA;;;;;AAYA;;;;;AAID;;;;;;;;;;;;AAaA;;;;;;;;;;;;;AAWA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;;;;;AAOA;;;;;;;;;AAOA;;;;;;;;;;;;;;;;;;;AAgBA;;;;AAEA;;;;AAEA;;;;;;;;;;;;AAUA;;;;;;;;AAMA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;;;;;AAOA;;;;;AAGA;;;;;;;;;;AAQA;;;;;AAGA;;;;;AAGA;EACG;;;;;AAGD;;;;;;;;;;AAQF;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;;;;;;AAOA;;;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0FA;;;;;;;;;;;;AAaA;;;;;;;;;;;;;AAWA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;;;;AAMA;;;;;;AAIA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;;AAKA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;;AAKA;;;;;AAGA;;;;AAEA;;;;;;;AAKA;;;;;;;;;;;;AAUA;;;;AAEA;;;;AAEA;;;;;;;;;AAOA;;;;;AAGA;;;;;;;;;AAOA;;;;;AAGA;;;;;;;;;AAOA;;;;;AAGA;;;;;;;;AAMA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;;;AAKA;;;;;;AAIA;;;;AAIA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;;;;;;;;AAcA;;;;;;;;;;;;AAUA;;;;AAIA;;;;;;;;;;AAQA;;;;;AAGA;;;;;;;;;AAOA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAKA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;;;AAKA;;;;;;AAIA;;;;;;;AAKA;;;;;;;AAKA;;;;;;;AAKA;;;;;;AAIA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;;;;AAUA;;;;;;AAIA;;;;;;AAIA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;AAKA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;;;AAKA;;;;;;AAIA;;;;;;;AAKA;;;;;;;AAKA;;;;;;;AAKA;;;;;;AAIA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;;;;AAUA;;;;;;AAIA;;;;;;AAIA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;AAKA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;;;AAKM;;;;;AAMA;;;;AAIA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;;AAIA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAUA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAMA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAQA;;;;AAgBA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAMA;;;;AAEA;;;;;AAGA;;;;;;;;AAMN;;;;;AAGI;;;;;;;AAKc;;;;AAElB;;;;;;;;AAMM;;;;;;;;;;;;;;;;;AAcA;;;;;;;;AAMA;;;;;AAGN;;;;;AAGgC;;;;AAEhC;;;;;AAGA;;;;;;;;;AAOA;;;;;;;;;;AAQA;;;;;AAGA;;;;;;AAIA;;;;;;;AAQA;;;;AAEQ;;;;AAEA;;;;;;AAIR;;;;;AAMA;;;;AAEA;;;;AAEQ;;;;AAIF;;;;AAGA;;;;;;AAIN;;;;;;AAIA;;;;;AAGA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;;;AAIA;;;;;AAIA;;;;;AAGA;;;;AAEA;;;;;;;;AAMA;;;;;AAGI;;;;;;;AAKJ;;;;;AAGE;;;;;;;;;;AAQF;;;;;AAGA;;;;;;;;;;AAOA;;;;AAEA;;;;AAeA;;;;;AAgBA;;;;AAeA;;;;;AAgBA;;;;;;;;;AAoBA;;;;;;;AAME;;;;AAEA;;;;;;AAIF;;;;;;;;;AAQE;;;;;;AAIF;;;;;;;;AAMA;;;;;;AAKA;;;;;;;;;AAOE;;;;AAEA;;;;;AAGF;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAKA;;;;AAKA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;;AAKA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;AAIA;;;;;;AAIA;;;;;AAGA;;;;AAEA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAA6D;;;;AAA+C;;;;;;;;;;;;AAA6L;;;;AAAsD;;;;;;;;AAAmJ;;;;AAAsD;;;;;;;;AAAyJ;;;;AAAsD;;;;;;;AAAkJ;;;;AAAsD;;;;;;;AAAoJ;;;;AAAuG;;;;;;AAA+C;;;;;;;AAA6F;;;;;;AAA2D;;;;AAAkC;;;;;;;AAAsH;;;;;;;AAAyH;;;;;;;AAA0H;;;;;;;AAA2H;;;;AAA2F;;;;AAAiG;;;;AAA6F;;;;AAA+F;;;;AAAkC;;;;;;;;AAAuG;;;;;;;;AAOx4E;;;;AAEE;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;;;;;;AASF;;;;;;AAIA;;;;AAEE;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEF;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;;AAIA;;;;;;AAIA;;;;AAEA;;;;;AAGA;;;;AAEA;EAEC;;;;;EAKA","sources":["app/assets/lookbook/css/lookbook.css"],"sourcesContent":["@import \"tailwindcss/base\";\n@import \"tailwindcss/components\";\n@import \"tailwindcss/utilities\";\n\n@import \"./tooltip.css\";\n\n@import-glob \"../../../components/lookbook/**/*/component.css\";\n\n@layer base {\n html {\n @apply scroll-smooth h-screen;\n }\n\n @media screen and (prefers-reduced-motion: reduce) {\n html {\n @apply scroll-auto;\n }\n }\n\n body {\n @apply text-lookbook-text font-sans text-sm antialiased overflow-hidden;\n }\n\n [x-cloak] {\n @apply !hidden;\n }\n\n pre[class*=\"language-\"] {\n @apply !p-0 !m-0;\n }\n\n ::-webkit-scrollbar {\n @apply w-1 h-1;\n }\n\n ::-webkit-scrollbar-track {\n @apply bg-transparent;\n }\n\n ::-webkit-scrollbar-thumb {\n @apply transition-colors rounded-full\tbg-clip-content bg-lookbook-scrollbar;\n }\n\n ::-webkit-scrollbar-thumb:hover {\n @apply bg-lookbook-scrollbar-hover;\n }\n}\n\n@layer components {\n [type=\"text\"],\n [type=\"email\"],\n [type=\"url\"],\n [type=\"password\"],\n [type=\"number\"],\n [type=\"date\"],\n [type=\"datetime-local\"],\n [type=\"month\"],\n [type=\"search\"],\n [type=\"tel\"],\n [type=\"time\"],\n [type=\"week\"],\n textarea,\n select {\n @apply text-lookbook-input-text placeholder:text-lookbook-input-text-placeholder placeholder:italic;\n @apply border-lookbook-input-border focus:ring-lookbook-input-border-focus focus:border-lookbook-input-border-focus;\n @apply rounded-md text-sm w-full bg-lookbook-input-bg block;\n }\n\n input[type=\"range\"] {\n -webkit-appearance: none;\n appearance: none;\n background: transparent;\n cursor: pointer;\n width: 100%;\n }\n\n input[type=\"range\"]:focus {\n outline: none;\n }\n\n input[type=\"range\"]::-webkit-slider-runnable-track {\n @apply bg-lookbook-input-toggle;\n border-radius: 0.5rem;\n height: 0.5rem;\n }\n\n input[type=\"range\"]::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n @apply bg-lookbook-input-toggle-active;\n margin-top: -4px;\n border-radius: 0.5rem;\n height: 1rem;\n width: 1rem;\n }\n\n input[type=\"range\"]::-moz-range-track {\n @apply bg-lookbook-input-toggle;\n border-radius: 0.5rem;\n height: 0.5rem;\n }\n\n input[type=\"range\"]::-moz-range-thumb {\n @apply bg-lookbook-input-toggle-active;\n border: none;\n border-radius: 0.5rem;\n height: 1rem;\n width: 1rem;\n }\n\n input[type=\"range\"]:focus::-webkit-slider-thumb,\n input[type=\"range\"]:focus::-moz-range-thumb {\n @apply outline-1 outline-lookbook-input-toggle-active outline-offset-2;\n }\n\n input[type=\"color\"] {\n -webkit-appearance: none;\n width: 46px;\n @apply border border-lookbook-input-border rounded-lg cursor-pointer;\n }\n\n input[type=\"color\"]::-webkit-color-swatch-wrapper {\n padding: 0;\n }\n\n input[type=\"color\"]::-webkit-color-swatch {\n @apply border-0 rounded-lg;\n }\n}\n"],"names":[],"version":3,"file":"lookbook.css.map"}
1
+ {"mappings":"AAKE;;;;;AAOD;;;;AAQC;;;;;;;AASA;;;;;AAOA;;;;;;AAMA;;;;AAIA;;;;;AAUA;;;;;AAKA;;;;AAMA;;;;;AAQA;;;;AAIA;;;;;;;AAMD;;;;AAEA;;;;AAMC;;;;;;AAQA;;;;;;;;;;AAcA;;;;AAMA;;;;;;AASA;;;;AAIA;;;;AAIA;;;;AAIA;;;;AAMA;;;;;AAKA;;;;AAKA;;;;;AAKA;;;;AAIA;;;;AAcD;;;;;AAGA;;;;AAEA;;;;;;AAQC;;;;AAKA;;;;;AAMA;;;;AAKA;;;;AAMA;;;;;AAYA;;;;;AAID;;;;;;;;;;;;AAaA;;;;;;;;;;;;;AAWA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;;;;;AAOA;;;;;;;;;AAOA;;;;;;;;;;;;;;;;;;;AAgBA;;;;AAEA;;;;AAEA;;;;;;;;;;;;AAUA;;;;;;;;AAMA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;;;;;AAOA;;;;;AAGA;;;;;;;;;;AAQA;;;;;AAGA;;;;;AAGA;EACG;;;;;AAGD;;;;;;;;;;AAQF;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;;;;;;AAOA;;;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0FA;;;;;;;;;;;;AAaA;;;;;;;;;;;;;AAWA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;;;;AAMA;;;;;;AAIA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;;AAKA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;;AAKA;;;;;AAGA;;;;AAEA;;;;;;;AAKA;;;;;;;;;;;;AAUA;;;;AAEA;;;;AAEA;;;;;;;;;AAOA;;;;;AAGA;;;;;;;;;AAOA;;;;;AAGA;;;;;;;;;AAOA;;;;;AAGA;;;;;;;;AAMA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;;;AAKA;;;;;;AAIA;;;;AAIA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;;;;;;;;AAcA;;;;;;;;;;;;AAUA;;;;AAIA;;;;;;;;;;AAQA;;;;;AAGA;;;;;;;;;AAOA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAKA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;;;AAKA;;;;;;AAIA;;;;;;;AAKA;;;;;;;AAKA;;;;;;;AAKA;;;;;;AAIA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;;;;AAUA;;;;;;AAIA;;;;;;AAIA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;AAKA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;;;AAKA;;;;;;AAIA;;;;;;;AAKA;;;;;;;AAKA;;;;;;;AAKA;;;;;;AAIA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;;;;AAUA;;;;;;AAIA;;;;;;AAIA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;AAKA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;;;AAKM;;;;;AAMA;;;;AAIA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;;AAIA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAUA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAMA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAQA;;;;AAgBA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAMA;;;;AAEA;;;;;AAGA;;;;;;;;AAMN;;;;;AAGI;;;;;;;AAKc;;;;AAElB;;;;;;;;AAMM;;;;;;;;;;;;;;;;;AAcA;;;;;;;;AAMA;;;;;AAGN;;;;;AAGgC;;;;AAEhC;;;;;AAGA;;;;;;AAiBI;;;;;;AAIJ;;;;;;;AAKI;;;;;;;;;AAOJ;;;;;;;;;;AAQA;;;;;AAGA;;;;;;AAIA;;;;;;;AAQA;;;;AAEQ;;;;AAEA;;;;;;AAIR;;;;;AAMA;;;;AAEA;;;;AAEQ;;;;AAIF;;;;AAGA;;;;;;AAIN;;;;;;AAIA;;;;;AAGA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;;;AAIA;;;;;AAIA;;;;;AAGA;;;;AAEA;;;;;;;;AAMA;;;;;AAGI;;;;;;;AAKJ;;;;;AAGE;;;;;;;;;;AAQF;;;;;AAGA;;;;;;;;;;AAOA;;;;AAEA;;;;AAeA;;;;;AAgBA;;;;AAeA;;;;;AAgBA;;;;;;;;;AAoBA;;;;;;;AAME;;;;AAEA;;;;;;AAIF;;;;;;;;;AAQE;;;;;;AAIF;;;;;;;;AAMA;;;;;;AAKA;;;;;;;;;AAOE;;;;AAEA;;;;;AAGF;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAKA;;;;AAKA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;;AAKA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;AAIA;;;;;;AAIA;;;;;AAGA;;;;AAEA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;;;AAIA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAA6D;;;;AAA+C;;;;;;;;;;;;AAA6L;;;;AAAsD;;;;;;;;AAAmJ;;;;AAAsD;;;;;;;;AAAyJ;;;;AAAsD;;;;;;;AAAkJ;;;;AAAsD;;;;;;;AAAoJ;;;;AAAuG;;;;;;AAA+C;;;;;;;AAA6F;;;;;;AAA2D;;;;AAAkC;;;;;;;AAAsH;;;;;;;AAAyH;;;;;;;AAA0H;;;;;;;AAA2H;;;;AAA2F;;;;AAAiG;;;;AAA6F;;;;AAA+F;;;;AAAkC;;;;;;;;AAAuG;;;;;;;;AAOx4E;;;;AAEE;;;;AAEA;;;;AAEA;;;;AAEA;;;;;;;;;;;AASF;;;;;;AAIA;;;;AAEE;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEF;;;;AAEA;;;;;AAGA;;;;;AAGA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;AAEA;;;;;AAGA;;;;;;AAIA;;;;;;AAIA;;;;AAEA;;;;;AAGA;;;;AAEA;EAEC;;;;;EAKA","sources":["app/assets/lookbook/css/lookbook.css"],"sourcesContent":["@import \"tailwindcss/base\";\n@import \"tailwindcss/components\";\n@import \"tailwindcss/utilities\";\n\n@import \"./tooltip.css\";\n\n@import-glob \"../../../components/lookbook/**/*/component.css\";\n\n@layer base {\n html {\n @apply scroll-smooth h-screen;\n }\n\n @media screen and (prefers-reduced-motion: reduce) {\n html {\n @apply scroll-auto;\n }\n }\n\n body {\n @apply text-lookbook-text font-sans text-sm antialiased overflow-hidden;\n }\n\n [x-cloak] {\n @apply !hidden;\n }\n\n pre[class*=\"language-\"] {\n @apply !p-0 !m-0;\n }\n\n ::-webkit-scrollbar {\n @apply w-1 h-1;\n }\n\n ::-webkit-scrollbar-track {\n @apply bg-transparent;\n }\n\n ::-webkit-scrollbar-thumb {\n @apply transition-colors rounded-full\tbg-clip-content bg-lookbook-scrollbar;\n }\n\n ::-webkit-scrollbar-thumb:hover {\n @apply bg-lookbook-scrollbar-hover;\n }\n}\n\n@layer components {\n [type=\"text\"],\n [type=\"email\"],\n [type=\"url\"],\n [type=\"password\"],\n [type=\"number\"],\n [type=\"date\"],\n [type=\"datetime-local\"],\n [type=\"month\"],\n [type=\"search\"],\n [type=\"tel\"],\n [type=\"time\"],\n [type=\"week\"],\n textarea,\n select {\n @apply text-lookbook-input-text placeholder:text-lookbook-input-text-placeholder placeholder:italic;\n @apply border-lookbook-input-border focus:ring-lookbook-input-border-focus focus:border-lookbook-input-border-focus;\n @apply rounded-md text-sm w-full bg-lookbook-input-bg block;\n }\n\n input[type=\"range\"] {\n -webkit-appearance: none;\n appearance: none;\n background: transparent;\n cursor: pointer;\n width: 100%;\n }\n\n input[type=\"range\"]:focus {\n outline: none;\n }\n\n input[type=\"range\"]::-webkit-slider-runnable-track {\n @apply bg-lookbook-input-toggle;\n border-radius: 0.5rem;\n height: 0.5rem;\n }\n\n input[type=\"range\"]::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n @apply bg-lookbook-input-toggle-active;\n margin-top: -4px;\n border-radius: 0.5rem;\n height: 1rem;\n width: 1rem;\n }\n\n input[type=\"range\"]::-moz-range-track {\n @apply bg-lookbook-input-toggle;\n border-radius: 0.5rem;\n height: 0.5rem;\n }\n\n input[type=\"range\"]::-moz-range-thumb {\n @apply bg-lookbook-input-toggle-active;\n border: none;\n border-radius: 0.5rem;\n height: 1rem;\n width: 1rem;\n }\n\n input[type=\"range\"]:focus::-webkit-slider-thumb,\n input[type=\"range\"]:focus::-moz-range-thumb {\n @apply outline-1 outline-lookbook-input-toggle-active outline-offset-2;\n }\n\n input[type=\"color\"] {\n -webkit-appearance: none;\n width: 46px;\n @apply border border-lookbook-input-border rounded-lg cursor-pointer;\n }\n\n input[type=\"color\"]::-webkit-color-swatch-wrapper {\n padding: 0;\n }\n\n input[type=\"color\"]::-webkit-color-swatch {\n @apply border-0 rounded-lg;\n }\n}\n"],"names":[],"version":3,"file":"lookbook.css.map"}