; Highlights query for Storybook DSL
; Maps grammar nodes to standard highlight groups

; Comments
(line_comment) @comment.line
(block_comment) @comment.block

; Keywords - Declaration keywords
[
  "character"
  "template"
  "life_arc"
  "schedule"
  "behavior"
  "institution"
  "relationship"
  "location"
  "species"
  "enum"
  "state"
  "concept"
  "sub_concept"
  "definition"
] @keyword.declaration

; Keywords - Control flow and modifiers
[
  "and"
  "or"
  "not"
  "on"
  "enter"
  "strict"
] @keyword.control

; Keywords - Import/module
[
  "use"
  "include"
  "from"
] @keyword.import

; Keywords - Special
[
  "as"
  "self"
  "other"
  "remove"
  "append"
  "is"
] @keyword.special

; any type keyword
(any_type) @keyword.special

; Boolean literals
[
  "true"
  "false"
] @constant.builtin.boolean

; Numbers
(integer) @constant.numeric.integer
(float) @constant.numeric.float
(time) @constant.numeric.time
(duration) @constant.numeric.duration

; Strings
(string) @string

; Identifiers in different contexts
(character_declaration name: (identifier) @type.character)
(template_declaration name: (identifier) @type.template)
(life_arc_declaration name: (identifier) @type.life_arc)
(schedule_declaration name: (identifier) @type.schedule)
(behavior_declaration name: (identifier) @type.behavior)
(institution_declaration name: (identifier) @type.institution)
(relationship_declaration name: (identifier) @type.relationship)
(location_declaration name: (identifier) @type.location)
(species_declaration name: (identifier) @type.species)
(enum_declaration name: (identifier) @type.enum)
(state_block name: (identifier) @type.state)
(concept_declaration name: (identifier) @type.concept)
(sub_concept parent: (identifier) @type.concept)
(sub_concept name: (identifier) @type.sub_concept)
(definition name: (identifier) @type.definition)
(variant_pattern name: (identifier) @type.variant)
(template_declaration species: (identifier) @type.builtin)

; Field names
(field name: (dotted_path) @property)
(sub_concept_field name: (identifier) @property)

; Species reference
(character_declaration species: (identifier) @type.builtin)

; Paths and identifiers
(path) @namespace
(identifier) @variable

; Prose blocks - tag and content
(prose_block tag: (identifier) @tag)
(prose_block marker: (prose_marker) @punctuation.delimiter)
(prose_content) @markup.raw

; Operators
[
  ">"
  ">="
  "<"
  "<="
  "->"
  "is"
] @operator

; Punctuation
[
  "{"
  "}"
] @punctuation.bracket

[
  "("
  ")"
] @punctuation.bracket

[
  "["
  "]"
] @punctuation.bracket

[
  ":"
  "::"
  ";"
  ","
  "."
  ".."
  "*"
  "@"
] @punctuation.delimiter

; Behavior tree nodes
(action_node (identifier) @function.action)

; Transitions
(transition "->" @operator.transition)
(transition target: (identifier) @type.state)

; Schedule blocks
(schedule_block name: (identifier) @function.schedule_block)

; Override operations
(override "@" @keyword.override)
(override_op "remove" @keyword.override)
(override_op "append" @keyword.override)

; Template clause
(template_clause "from" @keyword.import)

; Error handling
(ERROR) @error
